Angular2同步承诺
Angular2 synchronous promise
在Ionic 2
中,用于访问localStorage
的get
函数返回promise。下面代码的问题是headers
对象在附加Authorization
键之前就被返回了。我如何修改下面的函数,使headers
对象只有在promise被解析后才能返回。
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
});
相关文章:
- 为什么同步睡眠功能没有被承诺内异步化
- Javascript.同步运行多个承诺
- 压扁同步角度承诺
- 同步 Javascript 承诺超时以加班 Google 地理编码查询限制
- 将同步函数包装到承诺中的最佳方法是什么?
- 用Javascript承诺包装同步代码有什么好处吗
- Javascript承诺:then()'s是't同步
- 同步异步创建的承诺
- Angular2同步承诺
- 如何同步解决es6承诺链
- 同步解决HTTP延迟承诺
- 使我的异步代码与setTimeout同步.我需要承诺吗
- 嵌套承诺执行不同步
- 使用 co 和来自同步代码的承诺(mongoDB 示例)
- 为什么同步使用承诺会返回异步结果
- 在一个数组中同步链接蓝鸟承诺
- 与茉莉花中 ES6 承诺的 then/catch 方法同步
- Q承诺&同步I/O
- JavaScript同步承诺返回
- JavaScript:同步执行一系列承诺