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