我有一个模态弹出窗口,我正在编码,这样当调用open()
函数时,它会返回一个observable。然后,任何订阅者都将获得一个对象,该对象具有指示模态中按下了什么按钮的属性,或者是否已关闭等等。
如果成功'按下按钮,我想进行一个http调用,这反过来也会返回一个observable!我如何结合这两个可观测量?在带有承诺的角度1中,我可以从承诺中返回承诺,所以我会做类似
的事情 var promise = modal.open()
.then(function(res) {
if (res.success) {
return httpService.get(); // also returns a promise
}
return res;
});
我如何为可观察者做这样的事情?
答案 0 :(得分:1)
您可以利用可观察的运算符来构建异步数据流。在您的情况下,switchMap
运算符:
var observable = modalObservable.switchMap(() => {
return return httpService.get(); // also returns an observable
});
请谨慎导入您需要的运算符,因为它们不是默认运算符(请参阅此问题:Angular 2 HTTP GET with TypeScript error http.get(...).map is not a function in [null]):
import 'rxjs/add/operator/switchMap';
您可以查看以下文章和演示文稿以获取更多详细信息: