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 '可以赋值给另一个“= //// –