2017-09-23 57 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