角度2可观察的条件链

时间:2016-02-24 22:25:20

标签: javascript angular

我有一个模态弹出窗口,我正在编码,这样当调用open()函数时,它会返回一个observable。然后,任何订阅者都将获得一个对象,该对象具有指示模态中按下了什么按钮的属性,或者是否已关闭等等。

如果成功'按下按钮,我想进行一个http调用,这反过来也会返回一个observable!我如何结合这两个可观测量?在带有承诺的角度1中,我可以从承诺中返回承诺,所以我会做类似

的事情
 var promise = modal.open()
                    .then(function(res) { 
                        if (res.success) {
                            return httpService.get(); // also returns a promise
                        }

                        return res;
                    });

我如何为可观察者做这样的事情?

1 个答案:

答案 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';

您可以查看以下文章和演示文稿以获取更多详细信息: