2017-06-12 62 views
0

有沒有什麼辦法鏈接幾個觀察對象,但是可以隨時完成鏈條?我有三個Observable,他們都返回布爾值。但是,如果當前可觀察值爲假,我只想進入鏈中的下一個可觀察值。觀測數據必須在最後一個完成時完成,並且完成的數值爲假。這可能嗎?RXJS鏈條可觀察量在任何時間點完成

+1

請您澄清一下您的意思嗎? 「進展」,「鏈條」在這方面可能會混淆。有沒有機會提供你想要的樣本輸入/輸出? – superjos

+1

我在https://stackoverflow.com/a/42659054/2398593做了一個響應來鏈接請求,你只需要添加一個'if'來實現你想要的東西 – Maxime

回答

1

您可以設置一個observable來控制流程並在完成後完成它。同樣使用zip操作符 - 如果其中一個可觀察對象(在我們的例子中是控件對象)完成,它將完成整個流程。

let control$ = new Rx.Subject(); 

let data$ = Rx.Observable.interval() 
    .map(x => x<10?true:false) 
    .do(flag => { 
    if(flag) control$.next(true); 
    else control$.complete(); 
}); 

Rx.Observable.zip(data$.filter(x=>x), control$.startWith(true), (x,y)=>x) 
    .subscribe(x=>console.log(x))