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