1
我試圖從here改變一個小反應堆樣本,我對我得到的行爲有點困惑。反應堆多次使用doOnNext
所以首先我這樣的代碼:
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
但如果我加一箇中間varaible假裝我明白了一些方法或可讀性代碼開始表現不同。
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
任何人能解釋這種現象?