【发布时间】:2018-01-07 01:28:47
【问题描述】:
我正在制作一个 Angular 4 应用程序。组件正在订阅 Observable。有时 Observable 调用相同的 url。例如,在任何 http 请求之前需要“刷新访问令牌”。但如果我发出不同的 3 个 http 请求,它会“根据需要刷新”3 倍的刷新令牌。
那么如何让只有一个 http get 获得刷新的访问令牌,并让其他 observables '等待'第一个? (我知道“等待”对于 Observables 来说不是个好词)。
public get(url: string, options?: RequestOptionsArgs): Observable<Response> {
return this.getAccessToken().mergeMap(accessToken => {
return this.http.get(url, options);
});
}
// 和
this.get('www.myapi.com/one').subscribe(data=>console.log('one',data))
this.get('www.myapi.com/two').subscribe(data=>console.log('two',data))
this.get('www.myapi.com/three').subscribe(data=>console.log('three,data))
【问题讨论】:
-
为什么不在第一个订阅中调用其他可观察对象
-
因为我不知道哪个会被调用。而且它不是很 rxjs-ly。
标签: angular http rxjs observable