【发布时间】:2017-01-29 19:40:45
【问题描述】:
好的,这是一个快速的,我已经有点筋疲力尽并且让自己感到困惑:D
我正在使用 angular2 和 RxJS Observables。
我有一个带有属性“data”的服务,它是一个在构造函数中设置的 Observable,以及一个返回这个 observable 以订阅的方法。
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
}
}
我前段时间曾使用 replaySubjects 来始终将序列的所有值发送给新订阅者。然而,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()做你想做的事吗? -
我很困惑。您说观察者正在为新订阅者发出最后一个值,您似乎不喜欢。然后你说这就是你想要的。这是什么?
-
对不起,在电话里很累......是的,它的行为符合我的要求。我只是不确定它是否是有意的,因为一年前它并没有那样工作(或者至少我认为)。我想我应该在以后有时间的时候再次阅读 observables
标签: javascript angular rxjs observable