【发布时间】:2020-02-05 03:26:41
【问题描述】:
我使用“of”运算符创建 Observable,并且流由对象和对象数组组成。我订阅它,然后将一些东西推送到这个对象数组。
接下来,我再次订阅 Observable,我期望与第一次订阅时相同的值,但我得到了具有先前推送值的对象数组。这是为什么?
有一些代码:
ngOnInit() {
this.observable = of(
{
name: "Mark",
pets: [{
type: "dog",
age: 3
},
{
type: "cat",
age: 2
}]
});
this.getObservable();
this.getObservableOneMoreTime();
}
getObservable() {
this.observable.subscribe(r => {
this.state = r
this.state.pets.push({type: "bird", age: 1});
})
}
getObservableOneMoreTime() {
setTimeout(() => {
this.observable.subscribe(r => {
console.log(r);
})
}, 5000)
}
在控制台中,我得到一个包含 3 个元素的数组(包括“鸟”),但我希望得到初始数组 - 里面只有“狗”和“猫”。我不明白为什么会这样。是否有一些缓存或类似的东西?
我认为 Observables 在默认情况下是冷的,每个新订阅都会将起始值返回给新订阅者。
【问题讨论】: