我理解Observable数据服务的核心概念,但是当我需要更强大的服务时遇到了麻烦 .
对于用户查询,我必须进行一系列http调用,以便首先查询用户对象,然后在获取用户对象后查询其他数据 . 由于这些额外的调用取决于抓取的用户对象 . 订阅者可以使用任何额外的数据接收整个用户对象 .
我目前正在使用 userSource.mergeMap(user => extraDataNeeded(user))
来返回组合的Observable . 其中 extraDataNeeded
返回 Observable.forkJoin(...OBSERVABLES)
OBSERVABLES
是一个http调用数组,用于向用户对象添加额外数据 .
我的问题是,当其中一个额外的http调用失败时,链中的其余部分将被取消 . 我想从 userSource.mergeMap(user => extraDataNeeded(user))
创建的最高阶可观察量,如果一个失败,无论如何都要进行所有的http调用 . 我希望 userSource.mergeMap(user => extraDataNeeded(user))
的订阅者能够接收到能够获取的任何数据的用户对象,以及任何内部http调用失败的任何错误 . 如果原始_1382983失败,则完全失败并且没有成功响应 .
1 回答
您可以为每个
OBSERVABLES
添加一个catch
块,以便故障响应只返回next
块中的错误主体 .即
然后在构建对象时,您只需要适当地处理这些错误:
来自
userSource
Observable
的错误仍将传递给错误处理程序并完全绕过forkJoin
.