java - 单核细胞增多症> 如何订阅
问题描述
我正在尝试创建以下链:
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 吗?
解决方案
好吧,你已经有了。你只需要使用 flatMap:
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();
推荐阅读
- azure-ad-b2c - Azure AD B2C 如果用户多次尝试验证码失败,等待时间是多少
- reactjs - 如何防止 React 出现包版本差异问题
- python - 数据加载器未定义,但我已导入它
- ruby-on-rails - 在rails中读取带有德语字符的csv文件
- go - Go 尝试处理错误而不是我
- java - 如何使我的字符串成为可以重定向到另一个网站的超链接
- java - Maven Wagon ssl 不安全标志的 Gradle 等效项
- winforms - WebView2 不能在缩放的监视器上缩放
- c# - 西装外套 | MDE | 在应用程序中随时获取功能键的值
- python - Leetcode 编译器在为具有多个方法的类执行输入时如何工作?