我在a中调用2个服务forkJoin,第二个服务可能会失败,但stream如果第二个服务失败,我希望继续.
到目前为止我所拥有的:
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()
})
Run Code Online (Sandbox Code Playgroud)
Observable.of(undefined)或Observable.of(error)工作.但是,我的印象是,只返回一个empty Observable从catch将使呼叫失败默默流会继续下去吗?
如果service2失败,如何确保流继续?
Observable.empty()只需调用对象的complete方法observer,所以它不会做任何其他事情.这就是forkJoin工作方式:
当所有可观察量完成时,从每个可观察者发出最后一个值.
Observable.empty()没有任何最后的价值,所以forkJoin不知道如何emit the last value.如果你Observable.of(undefined)这意味着,你next用undefinedthen complete方法调用方法就会调用.所以最后一个值是undefined.
如果service2失败,如何确保流继续?
您可以添加错误处理程序和完整的处理程序以进行测试
在这里演示:http://jsbin.com/babirakiyi/1/edit?js,console
感谢@Yury Tarabanko测试用例:
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |