链接两个 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
我正在尝试链接两个可观察对象。我正在使用 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