我来自python世界,是Angular / ts / js编程方式的初学者。
该Ionic storage.get()
方法返回一个Promise
。我应该如何获取令牌的值才能通过http查询发送它?
现在,我正在尝试这个有问题的集团:
get(url: string): Observable<Response> {
let token = "";
this.storage.get('token')
.then(token => token = token);
return this.http.get(url, { "Authorization" : token});
}
当然,该请求以令牌=“”离开,而不是在应诺解决后应该返回的令牌。
我看不到Promise中除then()
和之外的其他方法catch()
。我考虑了以下代码:
get(url: string): Observable<Response> {
return this.storage.get('token').then(
token => {
return this.http.get(url, { "Authorization": token } )
);
});
但是,然后get(url)
返回Promise<Observable<Response>>
而不是,Observable<Response>
这对我没有太大帮助。
如果答案是在defer($ q https://docs.angularjs.org/api/ng/service/ $ q)的使用范围之内,那么有人可以告诉我该类如何导入angular / ionic吗?
谢谢您的帮助 :)
不,$q
在AngularJS中用于处理承诺。在Angular中,您将Observable
主要使用。
您可以使用Observable.fromPromise
将Promise转换为Observable后跟flatMap
,这样它最终将返回一个ObservableResponse
类型。
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';
get(url: string): Observable<Response> {
let token = "";
return Observable.fromPromise(this.storage.get('token'))
.flatMap(token => this.http.get(url, { "Authorization" : token}));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句