rx java - RXJava 如何等待/插入子序列



我有一个可观察命令序列。命令按顺序执行。现在,其中一个命令必须在执行时动态创建第二个可观察命令序列。在第一个序列继续下一个可观察量之前,必须完成第二个序列。这看起来像 git 中的合并(0 表示可观察的命令):

Seq1:   -0-0-0-0         0-0-0-0-
                       /
Seq2:            0-0-0-0

我使用 concatEager() 在一个序列中实现顺序执行。问题是当前执行如下所示(=>订阅 seq2 后,它与 seq1 并行执行)。

Seq1:   -0-0-0-0-0-0-0-0-
                       
Seq2:            0-0-0-0-

有没有办法在 seq1 的第四个可观察对象中等待/阻止,直到 seq2 完成?还是在订阅 seq1 后合并?

使用 concatMap .类似的东西

Observable.from(new Integer[]{ 0, 1, 2, 3, 4, 5})
          .concatMap( l -> {
            ArrayList<Integer> temp = new ArrayList<Integer>();
            temp.add(l);
            for (int i=0; i<l-1 ; i++) {
               temp.add(l);
            }
            return Observable.from(temp);
          })

确保两个可观察的等待在另一个完成之后的唯一方法是通过合并、压缩甚至更好的连接

       @Test
public void testContact() {
    Observable.concat(Observable.just("Hello"),
                      Observable.just("reactive"),
                      Observable.just("world"))
              .subscribe(System.out::println);
}

看看组合运算符的工作原理

https://github.com/politrons/reactive

最新更新