gpt4 book ai didi

javascript - 如何转换 RXJS Observable 中的属性

转载 作者:行者123 更新时间:2023-11-29 16:31:15 25 4
gpt4 key购买 nike

我必须转换 RXJS Observable 中的对象属性。这使用“ map ”运算符工作。当我订阅同一个 observable 两次时出现问题:属性被转换两次

我尝试使用“共享”运算符和多种变体,但似乎没有任何效果

代码示例:

    const source = of(
{ id: 1, name: 'John' },
);

const personObservable = source.pipe(
map(person => {
person.name = person.name + '_test'; return person;
}),
);

personObservable.subscribe(
person => console.log('first: ', person)
);

personObservable.subscribe(
person => console.log('second: ', person)
);

预期结果:

first:  John_test
second: John_test

实际结果:

first:  John_test
second: John_test_test

最佳答案

这是因为您正在修改同一个对象实例两次。当您的 map 返回该对象的副本时,它不会发生。试试这个:

const personObservable = source.pipe(
map(person => ({
...person,
name: person.name + '_test'
})),
);

您还可以将 shareReplay 运算符与您的原始映射函数一起使用:

const personObservable = source.pipe(
map(person => {
person.name = person.name + '_test'; return person;
}),
shareReplay()
);

Stackblitz

关于javascript - 如何转换 RXJS Observable 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56773848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com