链接两个observables http和存储

时间:2016-09-11 09:42:33

标签: javascript angular ionic2 observable chaining

我试图链接两个可观察者。我正在使用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);
  });

提前致谢。

2 个答案:

答案 0 :(得分:1)

链接可观察对象时,您需要使用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

答案 1 :(得分:0)

您已订阅,但没有订阅链的东西。你的第一个observable发出一个永远不会订阅的observable。基本上你必须做这样的事情:

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

HTH