【问题标题】:RxJava2 execute bunch of Completables in parallel and wait all to completeRxJava2 并行执行一堆 Completable 并等待全部完成
【发布时间】:2018-03-20 14:16:07
【问题描述】:

我想执行几个阻塞方法(网络调用、计算任务)。我想并行执行它们,并在它们全部完成时收到通知,或者如果它们中的任何一个失败(抛出异常)则收到错误消息。他们不会发出结果,所以Observable.zip() 不会帮助我。

到目前为止我有:

Completable a = computationTaskA();
Completable b = computationTaskB();
Completable c = computationTaskC();
Completable all = Completable.concat(Arrays.asList(a, b, c))
            .subscribe(() -> {
               // all succeed
            }, e -> {
               // any fails
            });

但是Completable.concat() 文档说Returns a Completable which completes only when all sources complete, one after another.。我没有找到可以并行执行它们的解决方案。

【问题讨论】:

标签: java rx-java rx-java2


【解决方案1】:

您可能想使用Completable.merge/mergeArray

Completable a = computationTaskA();
Completable b = computationTaskB();
Completable c = computationTaskC();
Completable all = Completable.mergeArray(a, b, c);

all.subscribe(
    () -> { /* success all around! */ },
    e -> { /* at least one failure :( */ }
);

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2016-02-21
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2023-02-22
    相关资源
    最近更新 更多