我可以获得rxjs observables来向每个订阅者输出唯一/克隆对象吗?

时间:2017-11-23 14:22:36

标签: rxjs

我想确保通过observable传递的对象引用不会在订阅者之间共享,这样不同的订阅者就不会相互影响操作同一个对象。

现在我只是在每个订阅调用中克隆收到的对象,但这很容易出错,因为我需要确保在每个订阅中都这样做。我真的希望能够为所有订阅者强制执行此操作。也许与运营商合作?

在observable的.map中进行克隆只会破坏源和订阅者之间的引用,这只会让我部分地到达我想要的位置。

1 个答案:

答案 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中进行克隆只会破坏源和订阅者之间的引用,这只会让我部分地到达我想要的位置。

我很困惑。缺少什么?