- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面两种执行方式有什么区别?
Mono.justOrEmpty(someFunction())
.doOnNext(() -> doSomeTask()).subscribe();
Mono.fromCallable(() -> someFunction())
.doOnNext(() -> doSomeTask()).subscribe();
最佳答案
使用 Mono.fromCallable
,只有当结果 Mono
被订阅时,Callable
才会被延迟调用。
(如果 someFunction
不带任何参数,您甚至可以将代码段重写为 Mono.fromCallable(this::someFunction)
)
使用 Mono.justOrEmpty
,运算符会立即捕获该值以供将来发射。所以实际上 someFunction()
方法在构建时立即被调用。
请注意,这两种变体都将正确处理返回 null
的 someFunction()
(与 Mono.just(...)
不同) .在这种情况下,生成的 Mono
将简单地完成(onComplete
信号没有 onNext
)。
另请注意,如果该方法是阻塞的且长时间运行,则在这两种情况下它都可能是反模式。参见 https://projectreactor.io/docs/core/release/reference/#faq.wrap-blocking
关于java - Mono.fromCallable 和 Mono.justOrEmpty 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71218721/
下面两种执行方式有什么区别? Mono.justOrEmpty(someFunction()) .doOnNext(() -> doSomeTask()).subscribe(); Mono.fr
下面两种执行方式有什么区别? Mono.justOrEmpty(someFunction()) .doOnNext(() -> doSomeTask()).subscribe(); Mono.fr
我是一名优秀的程序员,十分优秀!