Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带运算符的间隔(RxJava)_Java_Rx Java_Rx Java2 - Fatal编程技术网

使用带运算符的间隔(RxJava)

使用带运算符的间隔(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

我需要每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,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