我不知道存在的方法,但是,我們可以嘗試解決問題。讓我們把我們的潛在觀察者分成兩個流;一個滿足我們的謂語(即x => x === 3
)和一個當值不符合該謂詞:
const item$ = Rx.Observable.range(0, 10);
const predicate = x => x === 3;
// Split our underlying stream into two Observables; one where each value
// will equal three, and the other where each value is not three.
const [ three$, notThree$ ] = item$.partition(predicate);
我們可以每當7號發生時將發出流:
const seven$ = notThree$.filter(x => x === 7);
現在,讓我們兩個流來代表我們的基礎數據之前發出7和後
const beforeSeven$ = notThree$.takeUntil(seven$);
const afterSeven$ = notThree$.skipUntil(seven$);
最後,我們可以預期的效果組合這些流。我們基本上CONCAT的afterSeven $和三個$儘快流作爲我們beforeSeven $流結束:
const result$ = beforeSeven$.concat(three$.merge(afterSeven$);
這裏有一個的jsfiddle是console.log
S中的結果:https://jsfiddle.net/cbelden/ppjmxww1/
我想過這樣的事情!感謝您發佈這個答案。 – franza