【发布时间】:2015-05-01 19:47:16
【问题描述】:
我对 RxJava 比较陌生,我已经和操作符玩了一段时间了。
我看到了这个在短时间间隔(1s)后发出项目的小例子:
Observable<String> data = Observable.just("one", "two", "three", "four", "five");
Observable.zip(data, Observable.interval(1, TimeUnit.SECONDS), (d, t) -> {
return d + " " + t;
}).toBlocking().forEach(System.out::println);
这可行,但是当我删除将源变为 BlockingObservable 的 toBlocking() 时,程序会执行并以无输出结束。
我通常看弹珠图来正确理解事物: http://reactivex.io/documentation/operators/zip.html
在最后一句中它说:它只会发射与发射最少项目的源 Observable 发射的项目数量一样多的项目。
这是否意味着data Observable 在不到 1 秒的时间内发出所有项目并在打印每个 Observable 的前两个项目之前结束?因为每个 Observable 本身都是异步的?
我需要清楚地了解正在发生的事情,以及是否有其他方法可以处理类似情况。有人吗?
【问题讨论】:
标签: java multithreading reactive-programming rx-java