通过纯RxJava实现防止快速点击

问题描述 投票:1回答:1

我正在尝试通过使用crunchLast阻止纯/纯RxJava的快速点击。下面的代码执行得很好,但是从未调用过blockSubscribe代码块。我想念什么吗?

我在寻找有关JakeWharton / RxBinding的任何建议。我只使用RxJava

代码:

fun previousDateOnClick(view: View) {
    val time = System.currentTimeMillis()
    Timber.d("previousButtonClick time=%s", time)
    Observable.just(time)
            .throttleLast(500, TimeUnit.MILLISECONDS)
            .blockingSubscribe {
                Timber.d("blockingSubscribe throttleLast time=%s", time)
            }
}

日志输出:

2020-03-09 16:29:11.367 D: previousButtonClick time=1583751551367
2020-03-09 16:29:11.535 D: previousButtonClick time=1583751551535
2020-03-09 16:29:11.705 D: previousButtonClick time=1583751551704
2020-03-09 16:29:11.858 D: previousButtonClick time=1583751551857
2020-03-09 16:29:12.009 D: previousButtonClick time=1583751552009
2020-03-09 16:29:12.169 D: previousButtonClick time=1583751552169
2020-03-09 16:29:12.321 D: previousButtonClick time=1583751552320
2020-03-09 16:29:12.475 D: previousButtonClick time=1583751552474
2020-03-09 16:29:12.634 D: previousButtonClick time=1583751552633
2020-03-09 16:29:12.794 D: previousButtonClick time=1583751552793
2020-03-09 16:29:12.954 D: previousButtonClick time=1583751552953
2020-03-09 16:29:13.114 D: previousButtonClick time=1583751553114
2020-03-09 16:29:13.977 D: previousButtonClick time=1583751553976
2020-03-09 16:29:14.221 D: previousButtonClick time=1583751554220
2020-03-09 16:29:14.415 D: previousButtonClick time=1583751554414
2020-03-09 16:29:14.610 D: previousButtonClick time=1583751554609
2020-03-09 16:29:14.786 D: previousButtonClick time=1583751554786
2020-03-09 16:29:14.958 D: previousButtonClick time=1583751554957
2020-03-09 16:29:15.133 D: previousButtonClick time=1583751555132
2020-03-09 16:29:15.311 D: previousButtonClick time=1583751555310
2020-03-09 16:29:15.487 D: previousButtonClick time=1583751555486
2020-03-09 16:29:15.606 D: previousButtonClick time=1583751555605

此线程不是Preventing rapid clicks with RXJava的副本,因为那里的问题不在于使用纯/纯RxJava]来防止快速单击,我在那里可以看到一些第三方的建议。我在那里实现了公认的答案,但仍然无法实现,并且对其他库不感兴趣。

我正在尝试通过使用crunchLast阻止纯/纯RxJava的快速点击。下面的代码执行得很好,但是从未调用过blockSubscribe代码块。我想念什么吗?我不是...

android rx-java rx-java2 rx-android
1个回答
0
投票

throttleLast()运算符不会发出最后一个项目,如果Observable在时间间隔到期之前已完成。对于您而言,您有一个Observable,它发出一个元素并立即完成。

© www.soinside.com 2019 - 2024. All rights reserved.