首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将多个并发的rx-java单点链接

如何将多个并发的rx-java单点链接
EN

Stack Overflow用户
提问于 2018-04-03 12:39:33
回答 1查看 851关注 0票数 0

我正在学习使用Vert.x的Rx-Java2 2,我想用一些并行任务链接一个成功的配置检索。

我创建了一个搜索配置并返回单个订阅的方法,它运行良好。但我怀疑接下来的任务在哪里和如何进行:

代码语言:javascript
复制
   public void start(Future<Void> startFuture) throws Exception {
      Single<JsonObject> configSingle = prepareConfigurationAsync();
      configSingle.subscribe(onSuccess -> {
        System.out.println(onSuccess);
        -->   Single<Boolean> task1 = prepareLongAsyncTask1(onSuccess).subscribe(...); 
        -->   Completable task2 = prepareLongAsyncTask2(onSuccess)..subscribe(...); 

    }, onError -> {
        startFuture.fail(onError);
    }));

我所做的似乎是在工作,但没有并行性。我怎样才能做到这一点?

我应该如何和在哪里处理这些订阅?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 13:31:21

继续使用其他源通常是通过flatMap完成的。并行工作通常是用zipmerge完成的。在您的例子中,我认为您不需要内部Single的值作为输出的一部分,所以您可以尝试如下:

代码语言:javascript
复制
 Completable config = prepareConfigurationAsync()
     .flatMapCompletable(success ->
         System.out.println(success);
         return Completable.mergeArray (
             prepareLongAsyncTask1(success)
                 .doOnSuccess(innerSuccess -> /* ... */)
                 .toCompletable(),
             prepareLongAsyncTask2(success)
                 .doOnComplete(() ->  /* ... */)
         )
      );

  config
  .subscribe( () -> /* completed */, error -> /* error'd */);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49630327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档