在Ionic 2
该get
访问函数localStorage
返回一个承诺。以下代码的问题在于,在将headers
对象附加到Authorization
键之前,该对象已被返回。我如何修改以下函数,以便headers
仅在答应解决后才返回对象。
private _createAuthHeaders(): Headers {
let headers = new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json'
});
this.local.get('authToken').then(res=>{
headers.append('Authorization', res);
}, err=>{
headers.append('Authorization', '');
});
return headers;
}
我将以这种方式重构您的代码:
private _createAuthHeaders(): Headers {
let headers = new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json'
});
this.local.get('authToken').then(res=>{
headers.append('Authorization', res);
return headers;
}, err=>{
headers.append('Authorization', '');
return headers;
});
}
您可以像下面这样使用此方法:
this._createAuthHeaders().then(headers => {
// do something like setting the headers on the request
// and execute it...
});
编辑
您可以利用Promise链来使代码更整洁。这是一个示例:
this._createAuthHeaders().then(headers => {
// do something like setting the headers on the request
// and execute it...
return this.http.get('some url', { headers: headers }).toPromise();
}).then(result => {
// handle result
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句