结合内部 Concat Observables
Combine Inner Concat Observables
我是 RxJS 的新手并且有心理障碍。我的解决方案有效,但我知道这是一个 hack。执行以下操作的正确方法是什么?
// 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'}
Rx.Observable.concat(x,y)
.zipIterable(['x','y'], (v1, v2) => {
let result = {};
result[v2] = v1;
return result;
})
.toArray()
.map(objects => Object.assign({}, ...objects))
.subscribe(console.log.bind(console, '>> '));
前提是保持顺序,即第一个元素是x,第二个元素是y
我是 RxJS 的新手并且有心理障碍。我的解决方案有效,但我知道这是一个 hack。执行以下操作的正确方法是什么?
// 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'}
Rx.Observable.concat(x,y)
.zipIterable(['x','y'], (v1, v2) => {
let result = {};
result[v2] = v1;
return result;
})
.toArray()
.map(objects => Object.assign({}, ...objects))
.subscribe(console.log.bind(console, '>> '));
前提是保持顺序,即第一个元素是x,第二个元素是y