我正在研究一个Android项目,该项目可通过使用Rx-Java进行翻新来进行请求,并且可以进行订阅。
但是,在某些交互中,可以多次调用此请求,而我只想在预定义的时间范围内执行最后一个请求(反跳)。
我尝试将debounce
运算符直接应用于可观察对象,但是由于每次发生某些交互时都会执行以下代码,因此它不起作用:
mApi.getOnlineUsers()
.debounce(1, TimeUnit.SECONDS)
.subscribe(...)
我猜应该只创建一个可观察的对象,并且每次交互都应将执行“附加”到相同的可观察对象。但是,我对Rx Java还是陌生的,不知道该怎么做。
谢谢!
假设您要根据某个触发事件开始执行。
Observable<Event> trigger = ... // e.g. button clicks
您可以将触发事件转换为对API的调用,如下所示:
trigger
.debounce(1, TimeUnit.SECONDS)
.flatMap(event -> mApi.getOnlineUsers())
.subscribe(users -> showThemSomewhere(users));
另外,请注意,debounce
操作员将在时间范围内采取最后一次发生的措施,但throttlefirst
将采取第一项发生。根据您的用例,您可能要使用其中一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句