Java 项目反应器:设计反应性API
我有一个map函数,它的定义如下:Java 项目反应器:设计反应性API,java,reactive-programming,project-reactor,reactive-streams,Java,Reactive Programming,Project Reactor,Reactive Streams,我有一个map函数,它的定义如下:monomap(IN-IN) 下面是一个具体的例子: public Mono<Integer> map(String s) { return Mono.fromCallable(() -> { try { Thread.sleep(1_000); // simulate HTTP request return
monomap(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.
});
}
产出将是:
123456 如何实现同样的行为
map
应该是什么样子
编辑:重新考虑一下,也许我最好返回一些容器(比如
可选的)或者一个自定义的(结果)可以是空的 如果我理解正确,以下是您需要的:
return Mono.fromCallable(() -> {
Thread.sleep(1_000); // simulate HTTP request
return 1;
}).onErrorResume(_ -> Mono.empty())
为什么不在catch块中返回Mono.empty()。@uneq95,注意try catch在Mono.fromCallable
中,但是您没有从catch块返回任何内容。代码段中的return语句在catch块之外。是的,它可能在catch内部(其实并不重要)。问题是,您必须从可调用对象返回一些内容,而我希望将Mono::empty
返回给map
的调用者,以防没有答案。@yaseco您也可以在可调用lambda内返回null(例如:如果没有答案),这将导致空Mono:
return Mono.fromCallable(() -> {
Thread.sleep(1_000); // simulate HTTP request
return 1;
}).onErrorResume(_ -> Mono.empty())