角度承诺:无法获得价值

时间:2017-07-28 11:13:06

标签: angular ionic-framework promise

我来自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),有人可以告诉我这个类如何导入角度/离子?

感谢您的协助:)

1 个答案:

答案 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}));
}