【问题标题】:Angular Promise : unable to get valueAngular Promise:无法获得价值
【发布时间】:2018-01-04 10:29:46
【问题描述】:

我来自 python 世界,是 Angular / ts / js 编程方式的初学者。

Ionic storage.get() 方法返回一个Promise。我应该如何获取 token 的值以便通过我的 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&lt;Observable&lt;Response&gt;&gt; 而不是 Observable&lt;Response&gt;,这对我没有多大帮助。

如果 anwser 在 defer ($q https://docs.angularjs.org/api/ng/service/$q) 的使用范围内,有人可以告诉我如何将这个类导入到 angular / ionic 中?

感谢您的帮助:)

【问题讨论】:

    标签: angular ionic-framework promise


    【解决方案1】:

    不,$q 在 AngularJS 中用于处理承诺。在 Angular 中,您将主要使用 Observable

    您可以使用Observable.fromPromise 将promise 转换为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}));
    }
    

    【讨论】:

    • 嗨@pankaj-parkar。感谢您的回答。我得到“[ts] 属性 'fromPromise' 在类型 'typeof Observable' 上不存在。”我会尽快修复它,但如果您有任何提示,欢迎您:)
    • @Paul 你添加了Observable import 吗?
    • 是的,我的代码中有这两行:import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/fromPromise'; 但我在rxjs/add/operator 中没有fromPromise.js,所以我想这是正常的。还是不...?
    • 我的错,导入应该是import 'rxjs/add/observable/fromPromise';
    • @Paul 你能创建一个 plunker/fiddle 吗?
    猜你喜欢
    • 1970-01-01
    • 2019-04-22
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2020-02-23
    • 2021-04-24
    相关资源
    最近更新 更多