Angular2 同步承诺
Angular2 synchronous promise
在 Ionic 2
中,get
函数用于访问 localStorage
returns 承诺。下面代码的问题是 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
});
在 Ionic 2
中,get
函数用于访问 localStorage
returns 承诺。下面代码的问题是 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
});