使用带运算符的区间 (RxJava)
Using the Interval with Operators (RxJava)
我需要每 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
}
});
因为如果你想 skipLast
9 项,RxJava 应该先收集 9 项,然后它才能知道哪些是 'last 9 items'。我想你可以睡 3000 毫秒 onComplete
.
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
我需要每 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
}
});
因为如果你想 skipLast
9 项,RxJava 应该先收集 9 项,然后它才能知道哪些是 'last 9 items'。我想你可以睡 3000 毫秒 onComplete
.
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