gpt4 book ai didi

java - 使用 RxJava 执行多个 Observable

转载 作者:行者123 更新时间:2023-12-02 02:31:40 25 4
gpt4 key购买 nike

我定义了两个 Observables,我将它们称为如下:

Observable<Boolean> statusObser1 = reactiveApiConsumer.syncGradesSet1(subListDtos.get(0));
Observable<Boolean> statusObser2 = reactiveApiConsumer.syncGradesSet2(subListDtos.get(1));
statusObser1.toBlocking().first();
statusObser2.toBlocking().first();

但问题是 statusObser2 仅在 statusObser1 完成后执行。相反,我希望两个观察者并行执行,即 statusObser2 不应等待 statusObser1 完成。

最佳答案

由于您正在阻塞 (toBlocking()) 并等待它们的响应,因此它们会按顺序执行。

相反,订阅它们。单独:

Observable<Boolean> statusObser1 = ...
Observable<Boolean> statusObser2 = ...
statusObser1.subscribe(System.out::println); //Example
statusObser2.subscribe(System.out::println); //Example

或者使用 Zip 运算符:

public static int doSomethingWithBothValues(Boolean a, Boolean b) {
...
}

...

Observable<Boolean> statusObser1 = ...
Observable<Boolean> statusObser2 = ...
Observable.zip(statusObser1,statusObser2, this::doSomethingWithBothValues);

查看有关 Zip 运算符的更多详细信息 here .

在这两种情况下,如果可观察量是异步的,它们将并行执行。

您可以使用其他运算符来组合两个运算符的结果,而不会阻塞其中任何一个。

关于java - 使用 RxJava 执行多个 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46991346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com