为什么 RxJava2 不向线程发送数据



我已经阅读了RxJava的文档,并尝试了下面的演示: 输出为 d =[0]d = 假

我可以知道原因吗:为什么数据不发送到Observer

RxJava版本:2.2.6

Observable.just("aa","bbb")
.observeOn(Schedulers.newThread())
.map(s -> {
System.out.println("s = [" + s + "]");
return s.toUpperCase();
})
.subscribeOn(Schedulers.single())
.observeOn(Schedulers.io())
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
System.out.println("d = [" + d + "]"+"d = "+ d.isDisposed());
}
@Override
public void onNext(String s) {
System.out.println("s = [" + s + "]");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});

使用已添加到订阅的所有线程开关,订阅不再在主线程上运行。这也意味着没有任何东西不再停止主线程,并且您的应用程序在打印所需的数据之前退出。

出于测试目的,您可以在main()方法的末尾添加一个Thread.sleep(1000);(我想您已经添加了此代码(。然后,您将看到System.out.println()语句的输出。其他解决方案是不使用subscribeOn()observeOn()并保留在当前线程上。此外,您可以使用blockingSubscribe()等待订阅完成,然后再继续主线程。

相关内容

  • 没有找到相关文章

最新更新