【发布时间】: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