rxjs可观察性中不变性的预期行为



我一直在排除一个非常严重的错误,我最终意识到它是由可观测流中传递的嵌套对象的突变引起的,这真的让我很惊讶,因为我认为可观测对象及其有效负载是不可变的。为了更好地理解它,我在下面的CodeSandBox中复制了这个场景(查看控制台日志(。

当使用rxjs可观察性时,这是一种预期的行为吗?

在您的代码中,两个流都引用了of(obj)中的同一个对象,这就是您观察到意外突变的原因。

为了使数据不可变,objDownStream1$需要返回obj的副本。

const objDownStream1$ = intervalObj$.pipe(
map((obj) => {
return {...obj, nestedObj: { nestedProp: "downStream1Nested" } }
})
);

最新更新