javascript - 您可以返回一个对象数组,其中每个对象都包含来自 forkJoin 的可观察值吗?

标签 javascript angular rxjs fork-join rxjs-observables

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

假设我有一个函数调用,它接受水果对象的 id 并返回一个可观察值,该可观察值解析为 bool 值,指示值 isGood 是 true 还是 false。

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

在我看来,我应该能够做这样的事情:

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

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

最佳答案

您的问题是您的 forkJoin 正在展开您的 of 可观察量,但不是“数据”属性中返回的内部可观察量。

您需要传递 forkJoin 一个可观察数组,为您获取 isFruitGood 值,然后在这些值返回后,构建您的对象:

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

关于javascript - 您可以返回一个对象数组,其中每个对象都包含来自 forkJoin 的可观察值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66513221/

相关文章:

javascript - 多个复选框,使用 Vue.js 2.0 中的动态作弊数据绑定(bind)到同一个数组

javascript - 使用链接标签预加载图像 - 删除警告 (html/Javascript)

Angular - 如何为多个 http 请求实现 switchMap?

typescript - Angular 2 : switchMap not canceling previous http calls

angular - 避免在 Angular 2+ 中嵌套订阅?

rxjs - zip 的替代方案,每当任何可观察值发出值时都会产生值

javascript - 努力使用 ordinalScale() || 实现带标签的 x 刻度scaleBand() (d3 v4)

javascript - 将小数点限制在特定情况下(不是四舍五入)

javascript - 如何打开已应用搜索词的 Microsoft Office Web 查看器?

html - Angular 中的数据列表