RxJS可观察连续不工作

RxJS可观察连续不工作

问题描述:

concat调用发生了什么?我知道如果我通过merge代替concat,代码正常工作,输出为foobarquxquux。我已经阅读了关于热和冷的可观察性,并且我知道如果在订阅之前生成的值可能会发生热的可观察性,但是我的可观察性下面有cold,所以我认为情况并非如此。RxJS可观察连续不工作

const Rx = require('rxjs'); 

const observable1 = Rx.Observable.create((observer) => { 
    observer.next('foo'); 
    observer.next('bar'); 
    return observer; 
}); 
const observable2 = Rx.Observable.create((observer) => { 
    observer.next('qux'); 
    observer.next('quux'); 
    return observer; 
}); 
const result1 = observable1.concat(observable2); 
result1.subscribe((x) => console.log(x)); 

// outputs 
foo 
bar 

https://codepen.io/thiagoh/pen/WZyrRL

我相信observer1需要complete(),然后CONCAT可以开始输出observer2。

赞美CodePen

+0

谢谢。你有什么资料来确认/解释为什么这是必要的? – thiagoh

+1

@thiagoh这是'concat()'方法的一个正常行为。 '按照先前完成**的顺序订阅观察对象,发射值.' - https://www.learnrxjs.io/operators/combination/concat.html –

+0

大理石图是一种很好的视觉辅助材料[Concat ](http://reactivex.io/documentation/operators/concat.html) –