【发布时间】:2019-02-17 13:38:12
【问题描述】:
假设我有一个元素引发错误的通量。
Flux.just("aeiou","aeio").map(x -> {
if(!x.endsWith("u")){throws Exception;}
return x;})
.onErrorReturn(/*This only accepts a new element*/)
.map(x -> x+";")
.subscribe();
Flux.just("aeiou","aeio").map(x -> {
if(!x.endsWith("u")){throws Exception;}
return x;})
.onErrorResume(/*This doesn't do the next steps*/)
.map(x -> x+";")
.subscribe();
我想要这样的东西
Flux.just("aeiou","aeio").map(x -> {
if(!x.endsWith("u")){throws Exception;}
return x;})
.onErrorReturn(x -> x + "u")
.map(x -> x+";")
.subscribe();
文档似乎有误 http://projectreactor.io/docs/core/release/reference/#_fallback_method
Flux.just("key1", "key2")
.flatMap(k -> callExternalService(k))
.onErrorResume(e -> getFromCache(k)); //k not resolved here
【问题讨论】:
-
文档不仅正确,而且是解决您问题的可行解决方案。
-
@abetteroliver 嗯,我想用 k 的值回退,但是没有解决。我什至粘贴了代码块,解析器不喜欢。
-
e = Throwable,不是最后一个块中的字符串,k 应该是字符串
-
文档中的示例在
callExternalService创建的流上调用onErrorResume。你的没有。您可以使用flatMap而不是map来使其工作。