【问题标题】:Reactor use doOnNext multiple timesReactor 多次使用 doOnNext
【发布时间】:2016-11-28 19:03:41
【问题描述】:

我试图从 here 更改一些反应器样本,但我对我得到的行为有点困惑。

所以首先我的代码是这样的:

    EmitterProcessor<String> stream = EmitterProcessor.<String>create().connect();
    Flux<String> flux = stream
            .doOnNext(s -> System.out.println("1 " + s))
            .doOnNext(s -> System.out.println("2 " + s));
    flux.subscribe();
    stream.onNext("Hello");

此代码按预期打印两行:

1 Hello
2 Hello

但是,如果我添加一个中间变量,假装我是从某种方法获得的,或者为了便于阅读,代码的行为就会开始不同。

    EmitterProcessor<String> stream = EmitterProcessor.<String>create().connect();
    Flux<String> flux = stream
            .doOnNext(s -> System.out.println("1 " + s));
    flux .doOnNext(s -> System.out.println("2 " + s));
    flux.subscribe();
    stream.onNext("Hello");

所以对于上面的代码,我只得到一行,即:

1 Hello

谁能解释这种行为?

【问题讨论】:

    标签: reactor


    【解决方案1】:

    感谢 Stephane Maldini,我意识到 Flux 是不可变的,每个操作都会产生不同的流。 讨论是here

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 2021-12-22
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多