RxJS棘手拉链两个可观察量

时间:2017-01-18 22:33:10

标签: rxjs reactive-programming

进行getLastOrder()getUserDetails(lastOrder.owner)异步操作。 (两者都返回Observable

寻找花哨的运算符来获得合并结果,其中包括:[lastOrder, userDetails]谁拥有该订单。

P.S。通过临时变量执行此操作看起来不太漂亮

1 个答案:

答案 0 :(得分:1)

不确定花哨的运算符,但通过组合运算符flatMapmap可以很容易地解决这个问题。另请注意,我的函数只返回虚拟数据,但对任何observable都应该以相同的方式工作:

function getLastOrder() {
  return Rx.Observable.of({owner: 'foo'})
}

function getUserDetails(owner) {
  return Rx.Observable.of({details: 'bar', owner})
}

function combined() {
  return getLastOrder()
    .flatMap(order => getUserDetails(order.owner).map(details => [order, details]))
}

当你想到漂亮时,也要考虑下一个会读它的人。