我来自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});
}
当然,请求离开时使用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>
,这对我没什么帮助。
如果anwser属于延迟使用($ q https://docs.angularjs.org/api/ng/service/ $ q),有人可以告诉我这个类如何导入角度/离子?
感谢您的协助:)
答案 0 :(得分:0)
不,在AngularJS中使用$q
来处理承诺。在Angular中,您将主要使用Observable
。
您可以使用Observable.fromPromise
将保证转换为Observable,然后转换为flatMap
,这样它最终会返回Response
类型的Observable。
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}));
}