角度承诺:无法获得价值

top鱼

我来自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吗?

谢谢您的帮助 :)

Pankaj Parkar

不,$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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章