【问题标题】:RxJava execute Completable after Single asynchronouslyRxJava 在 Single 异步后执行 Completable
【发布时间】:2020-04-16 21:22:13
【问题描述】:

有没有办法让Single 发出数据,并在它发出数据时(或者可能在它完成时)以异步方式触发带有该数据的Completable

我的问题与this 非常相似,但我正在尝试异步调用Completable

这是我想要实现的一个简单示例:

Single.just("abc")
     .map(string -> {
         myHeavyCompletable(string); //this should be async
         return string;
     });

[...]

private Completable myHeavyCompletable(String string) {
    //heavy logic that could slow down the execution
}

我看到订阅map 中的Completable 可以让我以某种方式完成此操作,但我不知道如何以适当的方式处理它(因为此方法不会在活动中调用) .

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: java rx-java2 rx-android


    【解决方案1】:

    考虑在适当的线程上异步使用flatMapCompletablesubscribe。这种方法将所有逻辑组合为流水线序列,如果它不是您想要的,您可以在 map 中订阅 Completables 并将一次性作为结果返回并在最后收集它们并根据需要进行处理。

    【讨论】:

    • 感谢您的快速响应,我需要返回带有数据的 Single,因为我在 Single.concatArrayEager() 中使用该 sn-p 以及另一个 Single 来连接结果,所以我无法返回 CompletableDisposable
    • 通过其方法将可完成转换为单个
    • 如果我将 Completable 转换为 Single 尽管我会失去对正在发出的数据的引用并且 Completable 只会同步执行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多