如何在Rx.js中过滤时将observable拆分为2?

时间:2017-09-23 07:09:19

标签: javascript filter rxjs observable rxjs5

我希望在过滤时将Rx.js observable拆分为另外两个observable,以便一个observable包含过滤结果而另一个包含其他所有内容。

是否可以在不创建两个单独的过滤器的情况下拆分它们?

而不是:

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

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

我正在寻找类似的东西:

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

1 个答案:

答案 0 :(得分: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找到更多信息。