CombineLatest in Highland.js

时间:2015-12-08 13:45:28

标签: node.js rxjs highland.js

如何使用Highland实现与combineLatest类似的行为?看起来库中没有类似的内容

1 个答案:

答案 0 :(得分:1)

我的天真实施如下:

 var combineLatest = function(...streams) {
    var _streams = streams.map(
        (s, i) => s.map((x) => {return {[i]: x}})
    )
    return H(_streams).merge().scan1(H.extend).filter((obj) => {
      return Object.keys(obj).length === streams.length
    }).map(obj =>
      _(obj).pairs().reduce(
        (res, [key, val]) => {
          res[key] = val
          return res
        },
        []
      )
    )
  }
combineLatest(users, photos).each((x) => console.log(x))

但我对这种解决方案的表现并不担心