我需要每1/3秒发一次网络请求,并在onComplete方法之前等待3秒。我怎么做?我的代码在发出物品之前等了3秒钟,而且它不是我想要的。
disposable = Observable
.interval(0, 334, TimeUnit.MILLISECONDS)
.skipLast(9)
.take(postsCount + 9)
.subscribeWith(new DisposableObserver<Long>() {
@Override
public void onNext(@NonNull Long number) {
// Code in onNext method
}
@Override
public void onError(@NonNull Throwable e) {
// Code in onError method
}
@Override
public void onComplete() {
// Code in onComplete method
}
});
答案 0 :(得分:3)
不要睡觉,但要使用具有所需延迟的成分:
Observable.intervalRange(0, postCount, 0, 334, TimeUnit.MILLISECONDS)
.concatWith(Observable.empty().delay(3, TimeUnit.SECONDS))
... // react to each tick
答案 1 :(得分:0)
因为如果你想要skipLast
9个项目,RxJava应首先收集9个项目,然后它可以知道哪些是“最后9个项目”。我想你可以简单地睡3000毫秒onComplete
。
Observable.interval(0, 334, TimeUnit.MILLISECONDS)
.take(postsCount)
.doOnComplete { Thread.sleep(3000) }
.doOnNext { println(it) }
.doOnComplete { println("completed") }
.blockingSubscribe()