2017-10-11 100 views
2

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

回答

2

我相信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) –