angular 2:rxjs forkJoin http错误继续流

angular 2:rxjs forkJoin http错误继续流,angular,rxjs5,Angular,Rxjs5,我正在调用forkJoin中的两个服务,第二个服务可能会失败,但如果第二个服务失败,我希望流继续 到目前为止,我所拥有的: Observable.forkJoin([ this.http.get('/service1'), this.http.get('/service2').catch(error => Observable.empty()) ]) .do(([result1, result2]: any[]) => { //When ser

我正在调用
forkJoin
中的两个服务,第二个服务可能会失败,但如果第二个服务失败,我希望
流继续

到目前为止,我所拥有的:

Observable.forkJoin([
    this.http.get('/service1'),
    this.http.get('/service2').catch(error => Observable.empty())
])
    .do(([result1, result2]: any[]) => {
        //When service2 fails, I never get in here with .empty()

    })
可观察的(未定义)
可观察的(错误)
起作用。但是,我的印象是,从
catch
返回一个
空的可观测值将使调用无声地失败,流将继续

如果service2失败,如何确保流继续?

Observable.empty()
只需调用
Observable
对象的
complete
方法,这样它就不做任何其他事情。 这就是
forkJoin
的工作原理:

当所有观测值完成时,将从每个观测值发出最后一个值

Observable.empty()
没有任何最后一个值,因此
forkJoin
无法知道如何
发出最后一个值。如果您
Observable.of(undefined)
这意味着,您使用
undefined调用
next
方法,那么
complete
方法将调用。所以最后一个值是
未定义的

如果service2失败,我如何确保流继续

您可以为测试目的添加错误处理程序和完整处理程序

此处演示:

感谢测试用例:


+1如果任何源为空,甚至还有测试用例检查
forkJoin
不发出