Angular2同步承诺

Angular2 synchronous promise

本文关键字:承诺 同步 Angular2      更新时间:2024-04-26

Ionic 2中,用于访问localStorageget函数返回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
});