Observable <t> </t>的处理顺序

时间:2014-10-16 14:11:21

标签: rx-java

我正在寻找一种处理Observables<T>序列的方法。

List.of(observable1, observable2, ..., observableN);

在某种程度上,如果其中一个失败,则应跳过所有后续可观察量并报告error。或success如果所有可观测量都完整且没有错误。

1 个答案:

答案 0 :(得分:3)

如果所有可观察量的T都相同,那么只需使用Observable.from()将可观察量列表转换为Observable of Observables。然后使用Observable.concat()按顺序处理每个observable。任何错误都将暂停处理并调用您的订阅者onError()。

以下假设您有一个声明为List<Observable<Object>> observablesList的变量。只需替换您的项目类代替Object类。

Observable
    .concat(Observable.from(observablesList))    // The magic happens here.
    .subscribe(new Observer<Object>() {
        @Override
        public void onCompleted() {
            // Called when all items from all observables have
            // been emitted.
        }

        @Override
        public void onError(Throwable e) {
            // All errors end up here.
        }

        @Override
        public void onNext(Object item) {
            // Do what you want with "item"
        }
    });