首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mono<Mono<Object>>如何订阅

Mono<Mono<Object>>如何订阅
EN

Stack Overflow用户
提问于 2018-05-08 16:37:00
回答 1查看 9.6K关注 0票数 1

我试图创建以下链:

代码语言:javascript
复制
Mono<Object1> oneMono = Mono.just("1");
Mono<Object2> twoMono = Mono.just("2");

Mono<Mono<Object5>> resultMono = Mono.zip(oneMono, twoMono, (one, two) -> { 

    Mono<Object3> threeMono = Mono.just("3");
    Mono<Object4> fourMono = Mono.just("4");

    return Mono.zip(threeMono, fourMono, (three, four) -> {
        return "5";
    }
}) // get just Mono<Object5> here?

resultMono.subscribe(mono -> { 
    mono.subscribe();  // ugly double subscribe() !!
});

因此,我需要得到5,但在执行1,2和3,4之前。

代码工作正常,但我想出去。

来自Mono<Mono<Object5>>double subscribe

Mono<Object5>single subscribe

有适合Zip的模拟flatMap吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-08 17:03:39

你已经有了。您只需使用flatMap:

代码语言:javascript
复制
Mono<String> oneMono = Mono.just("1");
Mono<String> twoMono = Mono.just("2");

Mono.zip(oneMono, twoMono, (one, two) -> {
    Mono<String> threeMono = Mono.just("3");
    Mono<String> fourMono = Mono.just("4");

    return Mono.zip(threeMono, fourMono, (three, four) -> {
        return "5";
    });
})
.flatMap(stringMono -> stringMono)
.doOnNext(System.out::println)
.subscribe();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50238443

复制
相关文章

相似问题

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