我使用RxJava的throttleFirst一秒钟以避免快速按钮点击,但是我也希望在按钮上单击第二个按钮也会禁用一秒钟,反之亦然, 所以,简而言之,我不允许一个接一个地快速点击这两个按钮...你会推荐什么?我可以使用RxBinding来实现这个目标吗?
RxView.clicks(button)
.throttleFirst(1000, TimeUnit.MILLISECONDS)
.subscribe {
doSomething()
}
答案 0 :(得分:0)
这是一种可行的方法......
map
每个流的输出为将在订阅者中处理的某个已知值merge
两个流一起和throttleFirst
合并流这看起来像这样:
RxView.clicks(button1).map { "button1" }
.mergeWith(RxView.clicks(button2).map { "button2" })
.throttleFirst(1, TimeUnit.SECONDS)
.subscribeBy(
onNext = { value ->
if(value == "button1") {
// handle button1 click
} else {
// handle button2 click
}
},
onError = {
...
}
)
也许不是最优雅的,但希望它至少能激发一些想法!