【问题标题】:RxJS tricky zip two observablesRxJS 棘手的 zip 两个 observables
【发布时间】:2017-01-18 22:33:09
【问题描述】:

具有getLastOrder()getUserDetails(lastOrder.owner) 异步操作。 (都返回Observable

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

附:通过临时变量这样做看起来并不漂亮

【问题讨论】:

  • 你能详细解释一下你所说的操作是什么意思吗? A 是返回 Observable 的无参数函数,B 是转换 Observable 的函数吗?
  • 您能否举一个不那么抽象的例子来说明您实际想要实现的目标?
  • 抱歉,问题已完全编辑。

标签: rxjs reactive-programming


【解决方案1】:

不确定是否有花哨的运算符,但这可以通过组合运算符flatMapmap 很容易地解决。另请注意,我的函数只返回虚拟数据,但应该以相同的方式处理任何可观察对象:

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]))
}

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

【讨论】:

  • 提示:当你写.flatmap(x => doIt(x).map(y => [x,y])时,最好将你的resultSelector分开:.flatmap(x => doIt(x), (x,y) => [x,y])作为额外的奖励,你还可以访问xy的索引
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 2021-09-13
  • 2017-10-15
相关资源
最近更新 更多