好吧,这是一个快速的,我已经有点疲惫了,并且困惑着我自己:DRxJs - (为什么)Observable是否会在新的subsription上发布它的最新值?
我正在使用angular2和RxJS Observables。
我有一个属性“数据”,这是获得在构造函数中设置可观察到的服务,并返回该观察的订阅方法。
export class test{
private data: Observable<Object>
constructor(private http: Http){
this.data = this.http.get(url).map(res => res.json());
}
getData(): Observable<Object>{
return this.data
}
}
前段时间,我已经很聪明地回放了一些主题,以便始终将新序列的所有值发送给新的订阅者。然而,随着Observable上面的代码似乎将它发布给新用户的最新价值。这是打算?
test(i: number) {
if (i > 0) {
setTimeout(() => {
this.dataService.getData().subscribe((data) => {
this.debug.log(data);
this.test(i-1);
});
}, 2000);
}
}
test(4)
我得到每个迭代的值。我很困惑,因为一年前,当我想要这种行为时,在订阅“太晚”时我没有任何新的价值。从本质上讲,我只想缓存http.get的结果,并为所有订阅者提供相同的值,而不是为每个订阅创建一个新的http请求(在getData()中返回http.get(url)..) )
请问'this.http.get(url).map(res => res.json()).share()'做你想做的事情吗? – estus
我很困惑。你说观察员正在发布新用户的最后价值,你似乎并不喜欢。然后你说这就是你想要的。它是什么? – acdcjunior
对不起,在电话里,累了,.....是的,它表现了我想要的方式。我只是不确定它是否有意,因为一年前它没有这样工作(或者至少我认为)。我想我应该再次阅读观察对象,当我有时间后 – ch40s