angular 2: rxjs forkJoin http错误继续流
angular 2: rxjs forkJoin http error continue stream
我在 forkJoin
中调用 2 个服务,第二个服务可能会失败,但我希望 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()
})
Observable.of(undefined)
或 Observable.of(error)
有效。但是,我的印象是仅从 catch
返回一个 empty Observable
会使调用无声地失败并且流会继续?
如果 service2 失败,如何确保流继续?
Observable.empty()
只是调用 observer
对象的 complete
方法,所以它不会做任何其他事情。
这就是 forkJoin
的工作原理:
When all observables complete emit the last value from each.
Observable.empty()
没有任何最后一个值,所以 forkJoin
不知道如何 emit the last value
。如果你 Observable.of(undefined)
这意味着,你用 undefined
调用 next
方法,然后 complete
方法将被调用。所以最后一个值是 undefined
.
How can I ensure that the stream continues if service2 fails?
您可以添加错误处理程序和完成处理程序以进行测试。
此处演示:http://jsbin.com/babirakiyi/1/edit?js,console
感谢 @Yury Tarabanko 提供测试用例:
我在 forkJoin
中调用 2 个服务,第二个服务可能会失败,但我希望 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()
})
Observable.of(undefined)
或 Observable.of(error)
有效。但是,我的印象是仅从 catch
返回一个 empty Observable
会使调用无声地失败并且流会继续?
如果 service2 失败,如何确保流继续?
Observable.empty()
只是调用 observer
对象的 complete
方法,所以它不会做任何其他事情。
这就是 forkJoin
的工作原理:
When all observables complete emit the last value from each.
Observable.empty()
没有任何最后一个值,所以 forkJoin
不知道如何 emit the last value
。如果你 Observable.of(undefined)
这意味着,你用 undefined
调用 next
方法,然后 complete
方法将被调用。所以最后一个值是 undefined
.
How can I ensure that the stream continues if service2 fails?
您可以添加错误处理程序和完成处理程序以进行测试。
此处演示:http://jsbin.com/babirakiyi/1/edit?js,console
感谢 @Yury Tarabanko 提供测试用例: