如何加入两个可观察者?

时间:2018-04-16 02:42:22

标签: javascript json rxjs

我有两个json observables我需要加入,因为它们最初与另一个源分开,所以这只是一个例子,因为我也试图理解rxJS。

var obs = Rx.Observable.from([
  { id: "1", url: "whatever.jpg"},
  { id: "2", url: "whatever2.jpg"},
  { id: "3", url: "whatever3.jpg"}
])

var list = Rx.Observable.from([
  { first: "Gary", last: "Simon", age: "34"},
  { first: "Jane", last: "Simon", age: "34"},
  { first: "Juan", last: "Simon", age: "34"}
])

// I tried this   
var newObs = Rx.Observable.merge(list,obs)
// and this
var newObs = Rx.Observable.forkJoin(list,obs)

重点是我需要一个看起来大致如此的新json:

[{
    "first": "Gary",
    "last": "Simon",
    "age": "34"
},
{
    "id": "1",
    "url": "whatever.jpg"
}]

我应该如何使用RxJS?

1 个答案:

答案 0 :(得分:2)

使用zip

Observable.zip(obs, list).subscribe(([obsItem, listItem]) => console.log(obsItem, listItem));

注意:

  • 广泛使用的约定是将$添加为可观察名称的后缀。例如obs$list$
  • 如果输入可观察量的长度不同。结果将采用最短的长度。例如obs有3个项目,list有5个项目,则结果可观察结果只会发出3个项目并跳过list的最后2个项目。