我试图从本地存储中获取令牌并将其设置在标题中,但我不知道为什么不设置它。
getMurals() {
return this.http.get(AppSettings.API_ENDPOINT+'/murals', this.getHeader())
.map((response: Response) => response.json());
}
private getHeader() {
let header = new Headers();
this.storage.get('token').then((token)=>{
if(token){
header.append('authorization',token);
header.append('Content-Type','application/x-www-form-urlencoded');
}
})
return new RequestOptions({ headers: header });
}
您的header
尚未准备好,因为它正在等待获得storage
承诺得到解决。调用return new RequestOptions({ headers: header });
时,header is not prepared
。流量为
- 让标头=新标头((;
- 等待存储解决令牌。尚未完成,仍在3. 之前进行。
- 返回新requestOptions({headers:header}(;
您可以返回承诺。这样:
getMurals() {
this.getHeader().then(data => {
return this.http.get(AppSettings.API_ENDPOINT+'/murals', data)
.map((response: Response) => response.json());
})
}
private getHeader() {
let header = new Headers();
return new Promise((resolve) => {
this.storage.get('token').then((token)=>{
if(token){
header.append('authorization',token);
header.append('Content-Type','application/x-www-form-urlencoded');
}
resolve(new RequestOptions({ headers: header }));
});
});
}
此外,如果发生错误,这里还有很多错误处理要做。请参阅此信息。
注意:这也可以通过创建可观察到。您可以使用Observable.create(observer => { observer.next(new RequestOptions({headers: header})); })
。