}
}
复制代码
那么我们理想中的正确代码逻辑是这样的:
flow {
for (i in 0…100) {
// 模拟生成数据
emit(i)
}
}.debounce(500) // 这里是有效的 限流
.collect {
println(“----------------->>> $it”)
}
复制代码
好了,同学们可以再对比以上两段代码,for
循环就是我们模拟的输入数据,这个for
循环在里面和在外面是两个完全不一样的逻辑~不再多做解释了
你以为的正确写法
对于输入框的这类业务逻辑,单纯使用flow
是无法到达目的的,因为写不出来。有的小朋友要站起来高喊了,“怎么写不出来,你瞎说,我来写”,一顿操作写出了下面的代码:
// 小朋友写的错误代码🙅
flow {
editText.doAfterTextChanged { text ->
emit(text) // 这里是错误的,emit不可以写在内部类中
}
}.debounce(500)
.collect {
println(“----------------->>> $