你能 return 一个对象数组,每个对象都包含一个来自 forkJoin 的可观察对象吗?

Can you return an array of objects, with each object containing an observable from forkJoin?

let fruit = {
  id: 1,
  isGood: false
}

假设我有一个函数调用,它接受水果对象的 id 和 returns 一个可解析为布尔值的可观察对象,指示值 isGood 是真还是假。

我想映射一个水果对象数组并调用上述函数,然后使用返回的值在对象上设置 isGood 并在返回的同一对象上设置水果的 ID。

在我看来,我应该可以做这样的事情:

forkJoin(
  fruitArray.map(fruit => { 
     return of({ 
       "data": isFruitGood(fruit.id)),
       "id": fruid.id
      })
    })  
   ).subscribe(result => console.log(result))

这里的问题是返回了一个对象数组,但是对象中数据的可观察集没有解析。

您的问题是您的 forkJoin 正在解包您的 of 可观察对象,而不是您的“数据”中返回的内部可观察对象 属性。

您需要传递 forkJoin 一个为您获取 isFruitGood 值的 observables 数组,然后在它们返回后构建您的对象:

forkJoin(fruitArray.map(
  fruit => isFruitGood(fruit.id)
)).pipe(
  map(isGoodArray => isGoodArray.map(
    (isGood, i) => ({
      data: isGood,
      id: fruitArray[i].id
    })
  )
)).subscribe(result => console.log(result))

这是一个示例 StackBlitz