Cloud foundry 成功转型
我正在处理以下用例的:Cloud foundry 成功转型,cloud-foundry,project-reactor,Cloud Foundry,Project Reactor,我正在处理以下用例的: 我执行一个返回单声道的请求 此Mono成功后,我想执行一个可选操作,返回Mono 为了决定何时执行第二个操作,我使用了过滤器,但它似乎不起作用 所以,看起来是这样的: Mono<Void> service = createService(); Mono<String> serviceKey = service.filter( x -> someBoolean) .map( x -> someKey) .flatMap(
- 我执行一个返回单声道的请求
- 此
成功后,我想执行一个可选操作,返回Mono
Mono
- 为了决定何时执行第二个操作,我使用了
,但它似乎不起作用过滤器
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
Mono服务=createService();
Mono serviceKey=service.filter(x->someBoolean)
.map(x->someKey)
.flatMap(键->{
单键=服务键(键);
返回键;
});
serviceKey.blockOptional()//返回空
我的期望是,当service
成功并且filter
操作成功时,将发生第二次调用serviceKey
。然而,我在调试器中看到flatMap
中的代码从未执行过。
Mono#过滤器的javadoc
说明:
如果这个Mono被赋值,测试结果并在谓词返回true时重播它。否则就没有价值了
不知道该如何理解。。。问题是,当第一个返回Mono
时,如何链接成功的操作?
我只想在第一个成功时执行第二个,并在筛选器谓词失败时返回一个空的Mono
。Mono
意味着“将在没有值或错误的情况下完成”,因为您无法实例化Void
类型
您需要的是然后
操作符,它忽略前面的结果,并将流“切换”到提供的Mono
还有thenMany
,以防您需要将其“切换”到Flux