在RxJava中,可以使用concat
操作符来按顺序订阅多个Observable,然后使用toList
操作符将它们发出的值转换为一个数组。
以下是一个示例代码:
Observable observable1 = Observable.just("A", "B", "C");
Observable observable2 = Observable.just("1", "2", "3");
Observable observable3 = Observable.just("X", "Y", "Z");
Observable.concat(observable1, observable2, observable3)
.toList()
.subscribe(new Consumer>() {
@Override
public void accept(List values) throws Exception {
// 在所有Observable都完成后,以数组形式发出值
for (String value : values) {
System.out.println(value);
}
}
});
在这个例子中,我们先创建了三个Observable:observable1
,observable2
和observable3
。然后使用concat
操作符将它们按顺序订阅,并将它们发出的值合并到一个新的Observable中。最后,我们使用toList
操作符将所有值转换为一个数组,并在subscribe
中处理该数组。当所有Observable都完成后,将会执行accept
方法,并打印出所有的值。
输出结果为:
A
B
C
1
2
3
X
Y
Z
注意:使用concat
操作符时,如果其中一个Observable发生错误,则会停止订阅并立即发出错误。如果希望即使发生错误也继续订阅下一个Observable,可以使用concatDelayError
操作符。