当前位置: 首页 > 知识库问答 >
问题:

RxJava异步执行单次后完成

裘光启
2023-03-14

有没有一种方法可以让单个发出数据,并且当它发出数据时(或者当它完成时)以异步方式使用该数据触发完整的

我的问题与此非常相似,但我试图异步调用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
}

我看到订阅映射中的Completable允许我以某种方式完成这项任务,但我不知道如何以正确的方式处理它(因为在活动中不调用此方法)。

非常感谢您的帮助,谢谢!

共有1个答案

唐高卓
2023-03-14

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

 类似资料:
  • 问题内容: 总的来说,我对Swift和Xcode还是比较陌生,并且发现很多困难要设法解决。 我正在开发一个利用后端服务器的应用程序。为了不阻塞主线程,每当应用程序从服务器下载任何内容时,它都会异步地在其他线程上完成。但是,其余代码将继续在主线程上执行,并且当应该从服务器下载的数据尚未下载时,它将崩溃。我想知道如何在异步函数完成后调用函数来运行,这对于单独文件中的函数必须完成。 我读过闭包可能对此有

  • 我是RxJava新手。我想从给定集合中下载每个TempoAccount实体的一些数据,并将其存储在map accountsWithProjects中。当上一个onNext(TempoAccount TempoAccount)的代码完成时,我想调用filterAccountsWithProjects(accountsWithProjects)方法。有什么简单的方法可以实现吗? 问题:在上面的代码中,

  • 异步注解@Async,默认情况下是不生效的,需要的话可以启用. 该加载器有一个可选参数,线程池大小,默认是32,详情可以查阅org.nutz.aop.interceptor.async.AsyncAopIocLoader @IocBy( args={"*json","ioc/", "*anno","net.wendal.nutzbook", "*a

  • Node 库以多种方式处理异步功能。最常见的模式是 error-first callbacks,但是你还可能会遇到 streams、promises、event emitters、child processes, 或 observables。gulp 任务(task)规范化了所有这些类型的异步功能。 任务(task)完成通知 当从任务(task)中返回 stream、promise、event e

  • 当用户无法登录他们的帐户时,我正在尝试执行警报。也就是说,当我尝试使用下面的代码完成此操作时,我会抛出以下错误: 原因:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程[AsyncTask#1,5,main]内创建处理程序 我怎样才能解决这个问题?请参阅下面的代码。 登录活动

  • 我正在试验Python 3.4的asyncio模块。由于没有使用asyncio的MongoDB生产就绪包,我编写了一个小包装类,在执行器中执行所有mongo查询。这是包装: 我想异步执行插入,这意味着执行它们的协程不想等待执行完成。asyncio手册声明,所以我构造了这个测试脚本: 当我运行脚本时,我得到以下结果: 应该有一行指示mongo查询已完成。当我从这个协程而不是使用异步IO运行它时,我可