2
Im與Ionic2 + Laravel合作。 我試圖做一個「攔截器」,將放在標題(JWT)從本地存儲在我的所有Http請求身份驗證令牌。
所以,我犯了一個服務用的方法:等待承諾在外功能完成
post(url : string, json : any) : Observable <\Response> {
var headers = new Headers();
var token = null;
this.local.get("token").then((tk) => {
headers.append('Authorization', 'Bearer ' + tk);
var options = new RequestOptions({headers: headers});
token = tk;
});
-> wait the 'token' != null <-
return this.http.post(url, JSON.stringify(json), options);
}
的問題是:
我期待一個 「可觀察< \響應> http.post()」 返回時調用後( )從這項服務。
但是,我需要「this.local.get()」Promise完成解決方案,因爲我需要從LocalStorage令牌追加到標題。
我怎樣才能使「this.local.get()」承諾,獲得令牌,所以,聲明Observable http.post()並返回它? (對外部功能)
我只是找不到辦法。有什麼建議麼?謝謝:DD
哇,感謝快速回答。已經嘗試過了。正如我所說,我期待一個Observable <\Response>回報。所以,我得到了Typescript錯誤:「錯誤TS2322:鍵入'承諾'是不可分配類型'Observable '」 –
即使我刪除返回類型,我得到了像「Property'map'不存在鍵入'Promise'「導致即時通話 - >地圖()和地圖是一個Observable funcion(不是Promise ) –
最後,我嘗試用>施放回報,並且我得到了」Both type'Promise '也沒有輸入'Observable '可以賦值給另一個「= //// –