Angular 如何从承诺中返回可观察到的
我需要使用Angular 如何从承诺中返回可观察到的,angular,ionic2,Angular,Ionic2,我需要使用@Ionic/storage从存储器中获取承载令牌。 离子存储带来了希望。 然后我需要将其与角度http请求一起使用,该请求将返回Observable 我怎样才能达到同样的效果?或者,我是否可以使用@Ionic/Storage观察纯返回类型 get(url: string, options?: RequestOptionsArgs): Observable<any> { let promise = this.requestOptions(options).t
@Ionic/storage
从存储器中获取承载令牌。
离子存储带来了希望。
然后我需要将其与角度http
请求一起使用,该请求将返回Observable
我怎样才能达到同样的效果?或者,我是否可以使用@Ionic/Storage
观察纯返回类型
get(url: string, options?: RequestOptionsArgs): Observable<any> {
let promise = this.requestOptions(options).then((options) => {
return super.get(this.getFullUrl(url), options)
.catch(this.onCatch)
.do((res: Response) => {
this.onSubscribeSuccess(res);
}, (error: any) => {
this.onSubscribeError(error);
})
.finally(() => {
this.onFinally();
});
});
return Observable.fromPromise(promise);
}
get(url:string,options?:RequestOptionsArgs):可观察{
让promise=this.requestOptions(选项)。然后((选项)=>{
返回super.get(this.getFullUrl(url),选项)
.catch(this.onCatch)
.do((回复)=>{
本次认购成功(res);
},(错误:任意)=>{
此.onSubscribeError(错误);
})
.最后(()=>{
这个;
});
});
可观察的回报。来自承诺(承诺);
}
请求选项功能:
private requestOptions(options?: RequestOptionsArgs): Promise<RequestOptionsArgs> {
if (options == null) {
options = new RequestOptions();
}
if (options.headers == null) {
return this.currentUser.currentToken().then((token) => {
options.headers = new Headers({ 'Content-Type': 'application/json' });
options.headers.append('Authorization', 'Bearer ' + token);
return this.currentUser.getAppVersion().then((version: string) => {
options.headers.append("appVersion", version);
return options;
})
})
} else {
return null;
}
}
private requestOptions(选项?:RequestOptionsArgs):承诺{
如果(选项==null){
选项=新请求选项();
}
if(options.headers==null){
返回此.currentUser.currentToken()。然后((令牌)=>{
options.headers=新的头({'Content-Type':'application/json'});
options.headers.append('Authorization'、'Bearer'+令牌);
返回此.currentUser.getAppVersion()。然后((版本:字符串)=>{
options.headers.append(“appVersion”,version);
返回选项;
})
})
}否则{
返回null;
}
}
我不明白为什么问题的答案是这一部分。还有两条建议。使用async/await使代码看起来更干净,缓存令牌,不要每次尝试使用它时都通过promise请求它。请提供一些示例。我将在本机应用程序中使用此选项。检查此行return super.get(this.getFullUrl(url),options)
我认为参数不正确