我有一个地图函数,其定义如下: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);
输出将是:
123
456
如何实现相同的行为?
应该是什么map样子?
编辑:
重新考虑一下,也许我最好返回一些容器(如Optional)或一个Result可以为空的自定义容器( )。
红糖糍粑
相关分类