【发布时间】:2019-06-03 14:41:36
【问题描述】:
我正在处理以下用例的Cloudfoundry Java client:
- 我执行了一个返回
Mono<Void>的请求 - 在此
Mono成功后,我想执行一个返回Mono<String>的可选操作 - 为了决定何时执行第二次操作,我使用
filter,但它似乎不起作用
所以,它看起来像这样:
Mono<Void> service = createService();
Mono<String> serviceKey = service.filter( x -> someBoolean)
.map( x -> someKey)
.flatMap(key -> {
Mono<String> key = serviceKey(key);
return key;
});
serviceKey.blockOptional() //returns Empty
我的期望是,当service 成功并且filter 操作成功时,会发生第二次调用serviceKey。但是,我在调试器中看到 flatMap 中的代码永远不会被执行。
javadoc for Mono#filter 声明:
如果此 Mono 值,则测试结果并在谓词返回 true 时重放它。否则完全没有价值。
不知道如何理解...问题是,当第一个返回Mono<Void> 时,如何链接成功的操作?
我只想在第一个成功时执行第二个,并在过滤谓词失败时返回一个空的Mono。
【问题讨论】:
标签: cloud-foundry project-reactor