ayo*_*age 8 reactive-programming rx-java rx-android reactivex
我正在使用RxJava.我必须每5秒执行一次特定的任务.通过使用"Observable.Interval"方法完美地工作.但是,我还有以下约束:如果最后一个任务没有完成,则不能执行新任务.在这种情况下,新任务只有在最后一个完成时才需要执行.
我无法弄清楚如何使用RxJava做到这一点.
所有的想法都会非常感激^^
谢谢阅读.
Dav*_*ten 12
当您调用interval一个与给定调度程序中的单个线程相对应的worker时(默认为computation):
Observable
.interval(5, TimeUnit.SECONDS)
.flatMap(n -> task());
Run Code Online (Sandbox Code Playgroud)
或者如果任务没有返回任何内容:
Observable
.interval(5, TimeUnit.SECONDS)
.doOnNext(n -> task());
Run Code Online (Sandbox Code Playgroud)
这意味着每5秒就会运行一次,但如果任务需要5秒或更长时间,那么任务将连续运行(但不会同时运行).
如果要确保运行任务之间存在差距,则可以根据上一个任务完成的时间跳过任务.如果你需要,我可以把它充实.
Dave Moten的答案有一个小修正:如果需要它才能真正起作用-您不要忘记订阅。你应该做
Observable
.interval(5, TimeUnit.SECONDS)
.doOnNext(n -> task())
.subscribe()
Run Code Online (Sandbox Code Playgroud)