使用带运算符的间隔(RxJava)
我需要每1/3秒发出一次网络请求,并在onComplete方法之前等待3秒。我该怎么做?我下面的代码在发出项目之前等待了3秒钟,这不是我想要的使用带运算符的间隔(RxJava),java,rx-java,rx-java2,Java,Rx Java,Rx Java2,我需要每1/3秒发出一次网络请求,并在onComplete方法之前等待3秒。我该怎么做?我下面的代码在发出项目之前等待了3秒钟,这不是我想要的 disposable = Observable .interval(0, 334, TimeUnit.MILLISECONDS) .skipLast(9) .take(postsCount + 9) .subscribeWith(new Disposa
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,334,时间单位为毫秒)
.skipLast(9)
.参加(PostScont+9)
.subscribowith(新可处置观察员){
@凌驾
public void onNext(@NonNull Long number){
//onNext方法中的代码
}
@凌驾
公共无效onError(@NonNull可丢弃e){
//onError方法中的代码
}
@凌驾
未完成的公共空间(){
//onComplete方法中的代码
}
});
因为如果您想skipLast
9个项目,RxJava应该先收集9个项目,然后才能知道哪些是“最后9个项目”。我想你只需睡3000毫秒就可以完成
Observable.interval(0, 334, TimeUnit.MILLISECONDS)
.take(postsCount)
.doOnComplete { Thread.sleep(3000) }
.doOnNext { println(it) }
.doOnComplete { println("completed") }
.blockingSubscribe()
因为如果您想
skipLast
9项,RxJava应该首先收集9项,然后才能知道哪些是“最后9项”。我想你只需睡3000毫秒就可以完成
Observable.interval(0, 334, TimeUnit.MILLISECONDS)
.take(postsCount)
.doOnComplete { Thread.sleep(3000) }
.doOnNext { println(it) }
.doOnComplete { println("completed") }
.blockingSubscribe()
不要睡觉,但要使用具有所需延迟的构图:
Observable.intervalRange(0, postCount, 0, 334, TimeUnit.MILLISECONDS)
.concatWith(Observable.empty().delay(3, TimeUnit.SECONDS))
... // react to each tick
不要睡觉,但要使用具有所需延迟的构图:
Observable.intervalRange(0, postCount, 0, 334, TimeUnit.MILLISECONDS)
.concatWith(Observable.empty().delay(3, TimeUnit.SECONDS))
... // react to each tick