flux mono 转_反应编程 – 在Flux和Mono中的compose()与transform()vs. as()与map()

这里有两种截然不同的操作符类别:

从事Flux本身的运算符

转换和组合用于代码共享

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

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

这是一个方便的快捷方式,可以将函数应用于整个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,然后在结尾处第三次生成每个和的字符串.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值