【问题标题】:How do you modify object in array with response from observable RxJs如何根据可观察 RxJs 的响应修改数组中的对象
【发布时间】:2020-04-15 20:13:34
【问题描述】:

我正在尝试遍历一组人员并调用一个返回新年龄的 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 执行此操作

【问题讨论】:

    标签: javascript typescript ecmascript-6 rxjs


    【解决方案1】:

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

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

    结果将是您的modifiedPeople

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 2018-11-23
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2022-11-09
      相关资源
      最近更新 更多