angular rxjs:处理多个 http 请求

Sta*_*ame 2 observable rxjs angular

我有以下伪代码

objects = [obj1, obj2, obj3]    
for obj in objects {
user: http.get(obj1.user_id)
product: http.get(obj1.product_id)
}.subscribe(results => {

do something with results

})
Run Code Online (Sandbox Code Playgroud)

我在这里想要的是,我遍历一个对象数组,并为每个对象获取相关的用户和产品,然后订阅对用户和产品执行某些操作。我怎样才能做到这一点?

Mic*_*l D 5

你可以使用 RxJSforkJoinArray#map来并行触发多个 observables。

const objects = [obj1, obj2, obj3];

forkJoin(
  objects.map(obj =>           // <-- `Array#map` function
    forkJoin({
      user: http.get(obj.user_id)
      product: http.get(obj.product_id)
    })
  )
).subscribe({
  next: (res) => {
    console.log(res);
    // use `res`
  },
  error: (err) => {}
});


/*
output in subscription: 
[
  { 
    user: result from `http.get(obj1.user_id)`,
    product: result from `http.get(obj1.product_id)`,
  },
  { 
    user: result from `http.get(obj2.user_id)`,
    product: result from `http.get(obj2.product_id)`,
  },
  { 
    user: result from `http.get(obj3.user_id)`,
    product: result from `http.get(obj3.product_id)`,
  }
]
*/
Run Code Online (Sandbox Code Playgroud)