Как разделить наблюдаемое на 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.