我正在尝试迭代一组人并调用一个返回新年龄的 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/