当用户使用 rxbinding 和 rxjava 重复点击获取数据按钮时不要重新执行请求

don't re-execute request while user is clicking repeatedly on fetch data button using rxbinding and rxjava

我有一个 RxView 并且我已经设置了点击观察器,我不想每次点击总是发出新的请求。 我想要的是在仅使用 Rxjava 和 Rxbinding 进行获取数据请求时忽略用户点击。

button.clicks()
        .flatMapSingle {
            Completable.fromCallable {
                usersViewModel.users(emptyList())
            }
                .andThen(Request.users())
        }
        .doOnNext {
            Toast
                .makeText(this, R.string.users_updated, Toast.LENGTH_LONG)
                .show()
        }
        .subscribe(usersViewModel::users) { Log.e(this::class.java.name, it.message, it) }

除了ThrottleFirst还有什么办法吗?

禁用和重新启用按钮要简单得多,但您可以使用背压:

button.clicks()
        .toFlowable(BackpressureStrategy.DROP)
        .flatMapSingle ({
            Completable.fromCallable {
                usersViewModel.users(emptyList())
            }
            .andThen(Request.users())
        }, false, 1)
        .doOnNext {
            Toast
                .makeText(this, R.string.users_updated, Toast.LENGTH_LONG)
                .show()
        }
        .subscribe(usersViewModel::users) { 
            Log.e(this::class.java.name, it.message, it) 
        }