0

我需要在短时间内处理多个按钮点击,这样我需要获得用户点击的点击500ms次数,以减少我对后端的 API 调用次数。

val buttonStream = view.plusButton.clicks()
buttonStream
        .buffer(buttonStream.debounce(500, TimeUnit.MILLISECONDS))
        .map { it.size }
        .subscribe({ clicks ->
            Log.i(TAG, "Number of clicks: $clicks")
        })

我已经实现了上面的代码,但是当我单击按钮时它没有显示任何内容。当我删除.buffer(buttonStream.debounce(500, TimeUnit.MILLISECONDS))并添加.buffer(500, TimeUnit.MILLISECONDS)日志时,每 500 毫秒开始打印一次。有什么办法可以完成我的工作吗?

4

1 回答 1

0

使用以下代码设法得到预期的结果。

val buttonStream = view.plusButton.clicks()
        buttonStream
                .buffer(1000, TimeUnit.MILLISECONDS)
                .map { it.size }
                .filter { size -> size > 0 }
                .subscribe({ clicks ->
                    Log.i(TAG, "Number of clicks from the QUICK_ADD: $clicks")
                    uploadWaterIntake(clicks)
                })
于 2018-02-26T12:09:27.107 回答