Java RxJava无限发送列表中的项目

时间:2015-11-25 17:55:13

标签: android delay rx-java observable

我希望从一个arraylist重复发出具有指定延迟的项目。

    Observable.from(saverFileNameList)
            .subscribeOn(AndroidSchedulers.mainThread())
            .flatMap(urlString -> Observable.just(urlString)
                            .delay(5000, TimeUnit.MILLISECONDS)
                            .observeOn(AndroidSchedulers.mainThread())
                            .doOnNext(urlString1 -> {
                                ...


                            })
            ).repeat()
            .subscribe();

这是行不通的,出于某种原因,我在onNext上设置了一个打印日志,我可以看到所有内容都被打印得非常快,因此没有应用延迟。我做错了什么

1 个答案:

答案 0 :(得分:2)

如果您想延迟给定数量的源排放,可以使用以下内容:

Observable.from(saverFileNameList)
.delay(5000, TimeUnit.MILLISECONDS)
.repeat()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(v -> { }, Throwable::printStackTrace);

如果您想要中间延迟,请使用以下内容:

Observable.from(saverFileNameList)
.zipWith(Observable.interval(5, SECONDS).onBackpressureBuffer(), (a, b) -> a)
.repeat()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(v -> { }, Throwable::printStackTrace);