【发布时间】:2017-06-24 05:21:57
【问题描述】:
我正在学习 RxJava 异步订阅是如何工作的。但是有些问题让我很困惑。
@Test public void testCreateAsync() throws InterruptedException {
Observable<String> observable = Observable.create(emitter -> {
for (int i = 0; i < 10; i++) {
if (!emitter.isDisposed()) {
int finalI = i;
new Thread(() -> emitter.onNext("value_" + finalI)).start();
}
}
if (!emitter.isDisposed()) {
emitter.onComplete();
}
});
observable.subscribe(System.out::println);
}
上面的代码运行良好,并将value_1 打印到value_9。但是当我在订阅前添加睡眠时,不会打印最后一条消息value_9,如下所示:
@Test public void testCreateAsync() throws InterruptedException {
...
Thread.sleep(3000);
observable.subscribe(System.out::println);
}
感谢任何关于这个问题的讨论。
ps:java版本为1.8,RxJava版本为2.1.1。
【问题讨论】:
标签: rx-java2