0

当用户登录我的应用程序时,他们必须说出他们属于哪个俱乐部。一旦他们选择了俱乐部,我将其保存在存储中并将其附加到标题中。这是我目前拥有的代码:

let storage: Storage = new Storage();

export function getSubdomain(){
  return new Promise((resolve, reject) => {
    storage.get('club').then(club => {
      console.log(club);

      resolve(club)
    })
  });
}

export function getAuthHttp(http: Http, options: RequestOptions) {
  return new AuthHttp(new AuthConfig({
    noJwtError: true,
    globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': getSubdomain()}],
    tokenGetter: (() => storage.get('id_token'))
 }), http, options);
}

问题是getSubdomain()函数在调用 header 之前不返回名称。我知道这个问题是异步的。如果我输入返回“俱乐部名称”,它会非常好。我该如何解决这个问题?

4

2 回答 2

0

首先,getSubDomain()可以简化,因为您可以直接返回storage.get('club')结果。

正如您所提到的,您的问题是异步问题,您可以通过在创建另一个问题之前等待承诺结束来解决它,如下所示:

export function getAuthHttp(http: Http, options: RequestOptions) {
  return getSubDomain().then(subDomain => 
        new AuthHttp(new AuthConfig({
        noJwtError: true,
        globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': subDomain}],
        tokenGetter: (() => storage.get('id_token'))
     }), http, options));
}
于 2017-03-09T16:14:43.053 回答
0

我无法解决问题,Storage所以我不得不使用它,localstorage.getItem('club')因为它是同步功能,它看起来像这样:

export function getAuthHttp(http: Http, options: RequestOptions) {
  return getSubDomain().then(subDomain => 
    new AuthHttp(new AuthConfig({
    noJwtError: true,
    globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': localstorage.getItem('club')}],
    tokenGetter: (() => storage.get('id_token'))
  }), http, options));
}
于 2017-04-05T14:55:20.830 回答