我正嘗試在Angular2 HTTP
類的頂部創建一個使用API的類。最主要的是我需要添加自定義的auth頭,這是在用戶授權後可用的。是否有可能以某種方式同步調用異步Ionic Storage?
的主要問題是該令牌存儲在從它只能異步得到的離子性存儲模塊,但我需要返回的特定類型....
export class APIRequest extends Http {
private storage : Storage;
constructor (backend: XHRBackend, options: RequestOptions) {
super(backend, options);
this.storage = new Storage;
}
request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {
if (typeof url === 'string') {
url = AppConfig.API_SERVER + url
} else {
url.url = AppConfig.API_SERVER + url.url
}
this.storage.get('authToken').then(token => {
if (typeof url === 'string') {
if (!options) {
options = {headers: new Headers()};
}
options.headers.set('Authorization', `Bearer ${token}`);
} else {
url.headers.set('Authorization', `Bearer ${token}`);
}
// Here I need to return
}, err => {
// throw some error
})
return super.request(url, options).catch(this.catchAuthError(this));
}
}
所以基本上我需要以某種方式把return super.request(url, options)...
承諾的存儲和返回時,我得到的令牌。
你爲什麼不能使用''回報storage.get(),然後(FN)。然後(標記=> {返回super.request()})'' – raj
@raj因爲':Observable' –
user1692333
不是Observable的專家,但是如何使用'fromPromise'使得observable超出承諾,然後使用''flatMap''返回''request'' observale。 – raj