Как разделить наблюдаемое на 2 при фильтрации в Rx.js?

Я хотел бы разделить наблюдаемую Rx.js на две другие наблюдаемые при фильтрации так, чтобы одна наблюдаемая содержала отфильтрованные результаты, а другая содержала все остальное.

Можно ли разделить их, не создавая два отдельных фильтра?

Вместо этого:

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

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

Я ищу что-то вроде этого:

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

1 ответ

Решение

Я верю, что тебе нужно 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.

Другие вопросы по тегам