链接两个 observables http 和存储

Chaining two observables http and storage

我正在尝试链接两个可观察对象。我正在使用 Ionic2 框架。第一个 observable 尝试从移动设备获取访问令牌,然后第二个 observable 然后使用该访问令牌调用 api。但出于某种原因,即使我订阅了链条,第二个可观察对象也从未被调用过。

我错过了什么?

this.observableChain = Observable.fromPromise(this.storage.get('accessToken'))
  .map(accessToken => this.http.post('http://1234/user/login', {'accessToken': accessToken}))
  .subscribe(function(result) {
    console.log(result);
  }, function(error) {
    console.log(error);
  });

提前致谢。

您已订阅,但没有订阅外链。您的第一个可观察对象发出一个从未被订阅的可观察对象。基本上你必须做这样的事情:

obs1.subscribe(obs2 => obs2.subscribe(result => ...))

HTH

链接可观察对象时,您需要使用 flatMap()

Observable.fromPromise(this.storage.get('accessToken'))
    .flatMap(accessToken => 
        this.http.post('http://1234/user/login', {'accessToken': accessToken})
    )
    .subscribe(
        result => console.log(result), 
        error => console.log(error)
    );

在这里可以找到对这个概念的很好的解释 - http://reactivex.io/documentation/operators/flatmap.html