2017-09-23 50 views
0

我想在過濾時將一個Rx.js observable拆分爲另外兩個observable,這樣一個observable包含過濾結果,另一個observable包含其他所有內容。如何在Rx.js中篩選時將observable拆分爲2?

是否可以拆分它們而不創建兩個單獨的過濾器?

取而代之的是:

const observable$ = Rx.Observable.of(1, 2, 3, 4) 

observable$.filter(isOdd) 
observable$.filter(isEven) 

我正在尋找這樣的事情:

const [isOdd$, isNotOdd$] = observable$.split(isOdd) 

回答

3

我相信你需要的是partition

const source = Rx.Observable.from([1,2,3,4,5,6]); 

//first value is true, second false 
const [evens, odds] = source.partition(val => val % 2 === 0); 

evens.subscribe(n => console.log(n)); 
// 2, 4 

更多信息可在learnrxjs.io找到。

+0

謝謝!我很驚訝這篇文檔使用了一個與我期望的完全相同的語法幾乎相同的示例。 – Sawtaytoes