- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
s.equals("a") ? Mono.error(new RuntimeException() : Flux.j-6ren">
Flux.just("a", "b")
.flatMap(s -> s.equals("a") ? Mono.error(new RuntimeException() : Flux.just(s + "1", s + "2"))
.onErrorResume(throwable -> Mono.empty())
.subscribe(System.out::println);
你好!
在这里,我制作了两个元素的通量,然后通过 flatMap 将第一个元素暴露给异常,将第二个元素暴露给另一个通量。
使用onErrorResume
我期望输出
b1
b2
但什么也没得到。谁能解释一下为什么会发生这种情况?
谢谢。
最佳答案
鉴于此:
Flux.just("a", "b", "c")
.flatMap { s ->
if (s == "b")
Mono.error<RuntimeException>(RuntimeException())
else
Flux.just(s + "1", s + "2")
}.onErrorResume { throwable -> Mono.just("d") }.log()
.subscribe { println(it) }
输出为:
12:35:19.673 [main] INFO reactor.Flux.OnErrorResume.1 - onSubscribe(FluxOnErrorResume.ResumeSubscriber)
12:35:19.676 [main] INFO reactor.Flux.OnErrorResume.1 - request(unbounded)
12:35:19.677 [main] INFO reactor.Flux.OnErrorResume.1 - onNext(a1)
a1
12:35:19.677 [main] INFO reactor.Flux.OnErrorResume.1 - onNext(a2)
a2
12:35:19.712 [main] INFO reactor.Flux.OnErrorResume.1 - onNext(d)
d
12:35:19.713 [main] INFO reactor.Flux.OnErrorResume.1 - onComplete()
这是怎么回事? onErrorResume()
正在应用于 flatMap()
运算符返回的发布者。由于在“b”上发布者发出失败信号,因此 flatMap()
发布者不再执行,并且 onErrorResume()
运算符使用其后备继续发布。
documentation for onErrorResume()清楚地显示原始发布者由于错误而完成,并且后备接管:
关于java - 项目 react 堆: onErrorResume after flatMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49431554/
我正在尝试使用 WebFlux,但我看到了一个我不太了解的行为,我怀疑这是 WebFlux 或可能是 Reactor 中的错误,但我需要确认。 我试图创建一个最低限度可重现的案例,它由一个非常简单的
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我想知道是否有更好的方法在调用 onErrorResume 时不涉及使用额外的 ObjectMapper 来在 WebClient 中获取错误响应? 在我的网络客户端中: import org.spr
在spring项目reactor中,onErrorResume和doOnError有什么区别?我什么时候应该分别使用它们? 最佳答案 onErrorResume:当上游发生异常时提供回退流。 doOn
Flux.just("a", "b") .flatMap(s -> s.equals("a") ? Mono.error(new RuntimeException() : Flux.j
我正在使用 reactor kafka 发送 kafka 消息并接收和处理它们。 在接收 kakfa 负载时,我进行了一些反序列化,如果出现异常,我只想记录该负载(通过保存到 mongo ),然后继续
我是一名优秀的程序员,十分优秀!