!!! question "节流"
在一定时间间隔内,只执行最后一次请求, 忽略其他多余的请求
搜索输入框一般都是输入完关键词后自动开始搜索
这个过程涉及到
var scope: CoroutineScope? = null
// distinctUntilChanged 表示过滤掉重复结果
binding.etInput.debounce().distinctUntilChanged().launchIn(this) {
scope?.cancel() // 发起新的请求前取消旧的请求, 避免旧数据覆盖新数据
scope = scopeNetLife { // 保存旧的请求到一个变量中
tv.text = "请求中"
tv.text = Get<String>(Api.TIME).await()
}
}
指定参数设置节流阀超时时间
fun EditText.debounce(timeoutMillis: Long = 800)