我想确保通过observable传递的对象引用不会在订阅者之间共享,这样不同的订阅者就不会相互影响操作同一个对象。
现在我只是在每个订阅调用中克隆收到的对象,但这很容易出错,因为我需要确保在每个订阅中都这样做。我真的希望能够为所有订阅者强制执行此操作。也许与运营商合作?
在observable的.map中进行克隆只会破坏源和订阅者之间的引用,这只会让我部分地到达我想要的位置。
答案 0 :(得分:1)
.map()
就够了,除非它后面有.share()
:
var rxjs = require("rxjs")
var o = new rxjs.BehaviorSubject({id: 1})
.map(it => ({...it}))
o.subscribe(it => {
it.a = 1;
console.log(it)
})
o.subscribe(it => {
it.b = 2;
console.log(it)
})

运行:https://runkit.com/embed/xwuk9xlo6yhf
在observable的.map中进行克隆只会破坏源和订阅者之间的引用,这只会让我部分地到达我想要的位置。
我很困惑。缺少什么?