RxJava仅在成功时才在链中执行多个可观察对象

时间:2017-09-07 13:52:01

标签: java rx-java observable rx-android

我正在努力实现以下想法。

考虑以下案例

  1. 系统会提示用户输入字段
  2. 如果用户输入了某些内容,则会显示另一个对话框以确认上一个操作
  3. 如果用户确认了他的行为,则会调用服务。
  4. 如果可以在链中使用RxJava实现,那将非常优雅。

    这是我试过的

        dialogSubject.onNext(userInput);
        dialogSubject.onCompleted();
    

    我需要在链中运行这些主题,并且只有在前一个主题成功并且没有返回错误时才应执行下一个主题。

    这些主题由不同的对象控制,并以普通方式调用

    ApiName

    请建议是否可以实现我的想法,或者有更好的方法来实现这个目标?

    感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用主题将一个观察者的发射链接到另一个

@Test
public void chainObservables() throws InterruptedException {
    Observable<Long> observable = Observable.just(1l);
    Subject<Long, Long> publishSubject = ReplaySubject.create(1);
    Subject<Long, Long> publishSubject2 = ReplaySubject.create(1);
    interval.subscribe(publishSubject);
    publishSubject.subscribe(publishSubject2);
    publishSubject2.subscribe(System.out::println, (e) -> System.err.println(e.getMessage()), System.out::println);
}

这里observable将项目传递给publishSubject并将publishSubject传递给publishSubject2

您可以在https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/connectable/HotObservable.java

中查看更多热门观察信息示例