gpt4 book ai didi

reactive-programming - Flux 和 Mono 中的 compose() vs. transform() vs. as() vs. map()

转载 作者:行者123 更新时间:2023-12-04 03:03:21 26 4
gpt4 key购买 nike

最近,我决定用 projectreactor.io 尝试 spring 5 (io.projectreactor:3.1.1)。

有谁知道使用此功能的最佳情况是什么?使用它们各自的优缺点以及应该在何处使用?

好的例子会很有帮助。

最佳答案

这里有两种截然不同的运算符类别:

Flux 上工作的运算符(operator)本身
transformcompose用于代码互化

当您定期组合运算符链并且您的应用程序中具有通用运算符使用模式时,您可以共享此代码或使用 compose 为其赋予更具描述性的名称。和 transform .

两者之间的区别在于应用互操作运算符时:transform在实例化时应用它们,而 compose在订阅时应用它们(允许动态选择添加的运算符)。

看看 reference documentation有关更多详细信息和示例。
as
这是应用 Function 的便捷快捷方式到全Flux同时保持整个代码流畅的风格。一个例子是转换为 Mono (如 javadoc 中所示),但它也可以帮助以工厂方法样式实现的外部运算符。

reactor-addons MathFlux例如,并比较:

MathFlux.sumInt(Flux.range(1, 10)
.map(i -> i + 2)
.map(i -> i * 10))
.map(isum -> "sum=" + isum);

到:
Flux.range(1, 10)
.map(i -> i + 2)
.map(i -> i * 10)
.as(MathFlux::sumInt)
.map(isum -> "sum=" + isum)

(这可以帮助您处理这样一个事实,即与 Kotlin 不同,Java 没有扩展方法 :))

处理通过 Flux 的数据的运算符
map都是关于数据的。它将 1-1 转换函数应用于源中的每个元素,因为它们可用。

在上面的 MathFlux 示例中, map依次用于将每个原始整数加 2,然后再次将序列中的每个数字乘以 10,最后第三次产生 String从每笔款项中。

关于reactive-programming - Flux 和 Mono 中的 compose() vs. transform() vs. as() vs. map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com