角度2:rxjs forkJoin http错误继续流
问题描述:
我打电话给forkJoin
中的2个服务,第二个服务可能会失败,但如果第二个服务失败,我想stream
继续。角度2:rxjs forkJoin http错误继续流
我有什么至今:
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()
只需调用complete
方法observer
对象,所以它什么也不做。 这是怎么forkJoin
工作:
当完成所有观测发射从每个最后一个值。
Observable.empty()
没有任何最后的值,所以forkJoin
不知道如何emit the last value
。如果您Observable.of(undefined)
这意味着,您调用next
方法与undefined
然后complete
方法将调用。所以最后的值是undefined
。
如何确保在service2失败时流继续运行?
您可以添加错误处理程序和完成处理程序的测试目的。
演示在这里:http://jsbin.com/babirakiyi/1/edit?js,console
感谢@Yury Tarabanko测试用例:
+1甚至有测试用例检查'如果有源是空的HTTPS forkJoin'不会发出:// github上。 COM/ReactiveX/rxjs /斑点/主/规格/观测/ forkJoin-spec.ts#L165 –