猿问

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

首先,这是我的代码:


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));

}

这是我期望的输出:


737


747


757


777


737

正如文档next()所说,它采用第一个元素,从中创建一个元素,Mono然后取消订阅。


我得到的输出是:


737


737


守候你守候我
浏览 120回答 1
1回答

慕容708150

正如你所说,next()需要通量的第一个元素创建一个 Mono。Mono 是 0 或 1 值。所以订阅时你只会收到原始 Flux 的第一个值。看看大理石:查看完整值是如何在第一个值之后发出的。因此,如果我们将其应用于您的代码,我们有737 -> 747 -> 757 -> 777 |onNextprint 737next()737 -> |subscribe()print 737
随时随地看视频慕课网APP

相关分类

Java
我要回答