javascript - 如何使用可观察的 RxJs 的响应修改数组中的对象

标签 javascript typescript ecmascript-6 rxjs

我正在尝试迭代一组人并调用一个返回新年龄的 api,我将覆盖该年龄,然后与狗数组合并。代码如下所示:

const dogs = [{name:'Chichi', age:2}, {name:'Yayo', age:4}];
const people = [{name:'Mike', age:23}, {name:'John', age:45}];

const modifiedPeople = people.map(person => {        
    getNewAge(person).pipe(map(newAge=> {return person.age = newAge}));

return [...dogs, modifiedPeople];

})

这总是返回一个空的modifiedPeople。如何在 ES6 中使用 RxJs 执行此操作

最佳答案

您无法在 Array.map 中调用异步调用,因为它是同步方法。它不会等待异步调用完成并进一步移动,这就是为什么您对 modifiedPeople 未定义,而且 pipe 运算符返回一个 Observable ,其中需要订阅结果。

forkJoin(
  people.map(person =>
    this.getNewAge(person)
      .pipe(map(newAge => ({ ...person, age: newAge })))
  )
)
.subscribe(result => console.log(result));

结果将是您的modifiedPeople

关于javascript - 如何使用可观察的 RxJs 的响应修改数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59473962/

相关文章:

javascript - 收到两个不同的服务调用后显示页面

javascript - 为什么 WeakSet 不能和 Symbol 一起使用?

javascript - 是否可以使用 JS 修改调用脚本的 html 文件?

javascript - 如何在鼠标位置缩放图像并在 div 上显示结果

angular - 使用 spyon 时的代码覆盖率问题

typescript - 尝试使用空 ts 项目初始化 webpack 时出错

javascript - 在 JS 中,console.log 以不同的方式运行,如代码所示。为什么?

reactjs - 当尝试在 React 中访问本地 json 文件时,您需要启用 javascript 来运行此应用程序响应

javascript - 为什么它说 jqxchart 输入数据数组的格式不正确?

javascript - preventDefault 在 Google Chrome 5 中不起作用