0
Я новичок в RxJS и имеет ментальный блок. Мое решение работает, но я знаю, что это взломать. Каков правильный способ сделать следующее?Комбинируйте внутренние конкатентные наблюдения
// Desired Console Log: {x: 'abcd', y: 'efgh'}
const x = Rx.Observable.of('abcd').delay(1000);
const y = Rx.Observable.of('efgh').delay(1000);
Rx.Observable.concat(x,y)
.scan((acc, cur) => {
if (cur.includes('a')) {
acc.x = cur;
}
if (cur.includes('e')) {
acc.y = cur;
}
return acc
}, {x: false, y: false})
.filter(x => x.y === 'efgh')
.subscribe(x => console.log(x))
// {x: 'abcd', y:'efgh'}
Спасибо! .toArray() - это то, что мне нужно. Мне любопытно, почему вы использовали .zip? Это также дает правильный выход без zip. .toArray() .map (array => ({x: array [0], y: array [1]})) –
Ну, zip будет чище, если у вас много ключей, а не только x, y. Если это всегда x, y, я бы выбрал вашу реализацию. – Meir
Это только X и Y ... пока. Спасибо за объяснение и вашу помощь! –