结合内部Concat Observables

时间:2016-10-21 20:40:18

标签: rxjs rxjs5

我是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'}

1 个答案:

答案 0 :(得分:0)

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而第二个元素