我一直在排除一个非常严重的错误,我最终意识到它是由可观测流中传递的嵌套对象的突变引起的,这真的让我很惊讶,因为我认为可观测对象及其有效负载是不可变的。为了更好地理解它,我在下面的CodeSandBox中复制了这个场景(查看控制台日志(。
当使用rxjs可观察性时,这是一种预期的行为吗?
在您的代码中,两个流都引用了of(obj)
中的同一个对象,这就是您观察到意外突变的原因。
为了使数据不可变,objDownStream1$
需要返回obj的副本。
const objDownStream1$ = intervalObj$.pipe(
map((obj) => {
return {...obj, nestedObj: { nestedProp: "downStream1Nested" } }
})
);