我有一个地图函数,其定义如下:Mono<OUT> map(IN in)这是一个具体的例子:public Mono<Integer> map(String s) { return Mono.fromCallable(() -> { try { Thread.sleep(1_000); // simulate HTTP request return 1; } catch (Exception e) {} return -1; // need to return something. }); }问题是如果出现错误(即IOException),我们仍然需要返回一些输出。也有可能没有答案(但没有发生错误)一种解决方案可能是,Optional::empty但我认为这很麻烦。Mono::empty如果发生错误,我最好返回。原因是,Mono::empty在没有任何进一步处理的情况下被订阅者消费。这是一个例子:Flux.just( Mono.just("123"), Mono.empty(), Mono.just("456") ).flatMap(s -> s) .subscribe(System.out::println);输出将是:123456如何实现相同的行为?应该是什么map样子?编辑:重新考虑一下,也许我最好返回一些容器(如Optional)或一个Result可以为空的自定义容器( )。
1 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
如果我理解正确,这就是你需要的:
return Mono.fromCallable(() -> { Thread.sleep(1_000); // simulate HTTP request return 1; }).onErrorResume(_ -> Mono.empty())
添加回答
举报
0/150
提交
取消