为了账号安全,请及时绑定邮箱和手机立即绑定

反应链中 next() 的奇怪行为

反应链中 next() 的奇怪行为

守候你守候我 2022-07-06 17:25:19
首先,这是我的代码:public static void main(String[] args) {    List<String> l1 = Arrays.asList("737", "747");    Flux<String> f1 = Flux.fromIterable(l1);    List<String> l2 = Arrays.asList("757", "777");    Flux<String> f2 = Flux.fromIterable(l1);   f1.mergeWith(f2)    .doOnNext(a -> System.out.println(a))    .next()    .subscribe(a -> System.out.println(a));}这是我期望的输出:737747757777737正如文档next()所说,它采用第一个元素,从中创建一个元素,Mono然后取消订阅。我得到的输出是:737737
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

正如你所说,next()需要通量的第一个元素创建一个 Mono。Mono 是 0 或 1 值。所以订阅时你只会收到原始 Flux 的第一个值。

看看大理石:

//img1.sycdn.imooc.com//62c5551d0001317b06370303.jpg

查看完整值是如何在第一个值之后发出的。


因此,如果我们将其应用于您的代码,我们有


737 -> 747 -> 757 -> 777 |


onNext


print 737


next()


737 -> |


subscribe()


print 737


查看完整回答
反对 回复 2022-07-06
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号