为了账号安全,请及时绑定邮箱和手机立即绑定

Project Reactor:设计反应式 API

Project Reactor:设计反应式 API

千万里不及你 2023-04-26 14:29:19
我有一个地图函数,其定义如下: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())


查看完整回答
反对 回复 2023-04-26
  • 1 回答
  • 0 关注
  • 62 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信