在主线程上观察的RxJava调度程序

2022-09-02 10:27:12

如果我写这样的东西,那么操作和通知都将在当前线程上...

Observable.fromCallable(() -> "Do Something")
    .subscribe(System.out::println);

如果我在这样的后台线程上执行操作,则操作和通知都将在后台线程上...

Observable.fromCallable(() -> "Do Something")
    .subscribeOn(Schedulers.io())
    .subscribe(System.out::println);

如果我想在主线程上观察并在Android的后台进行,我会做的...

Observable.fromCallable(() -> "Do Something")
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(System.out::println);

但是,如果我正在编写一个标准的Java程序,那么您想要在主线程上观察到的状态相当于什么呢?


答案 1

对于 RxJava2 使用”blockingSubscribe()"

Flowable.fromArray(1, 2, 3)
                .subscribeOn(Schedulers.computation())
                .blockingSubscribe(integer -> {
                    System.out.println(Thread.currentThread().getName());
                });

答案 2

将 转换为 via ;这为您提供了等待完成,获取一个项目等的阻止方法。ObservableBlockingObservable.toBlocking()


推荐