Rxjs 是否有一个类似于forkJoin的可观察操作符,但只有在所有请求都失败时才会出错?
比如说Rxjs 是否有一个类似于forkJoin的可观察操作符,但只有在所有请求都失败时才会出错?,rxjs,observable,angular5,Rxjs,Observable,Angular5,比如说 return Observable.forkJoin([ getData1(), getData2(), getData3(), getData4() ]) 如果其中一个失败,订阅forkJoin observable的订阅者就会失败,是否有一个操作员只有在所有的都失败时才会失败?rxjs设计的一部分是,任何错误都会导致observable链失败 听起来,您试图捕获的
return Observable.forkJoin([
getData1(),
getData2(),
getData3(),
getData4()
])
如果其中一个失败,订阅forkJoin observable的订阅者就会失败,是否有一个操作员只有在所有的都失败时才会失败?rxjs设计的一部分是,任何错误都会导致observable链失败
听起来,您试图捕获的条件并不是真正的失败,而是一种正常情况-如果您更改子观测值以检测错误,然后返回一个值,该值可以通过映射或过滤器之类的东西在下游检测到,然后,您将能够实现您想要的目标。如果您对从内部观测值中获取错误感兴趣,
物化可能是一种可行的方法:
const pluckError = (obs: Observable<any>) =>
obs.materialize().filter(x => x.kind === 'E')
Observable.forkJoin(
obs1.pipe(pluckError),
obs2.pipe(pluckError)
....
)
常量错误=(obs:可观察)=>
obs.materialize().filter(x=>x.kind=='E')
可观察的分叉连接(
obs1.管道(错误),
obs2.管道(错误)
....
)
重要的是要注意,outer observable不应引发错误,因为它将终止整个observable,但您可以使用materialize捕获/或获取通知元数据,并且只拾取错误以使forkjoin完成。因此,如果它转到订阅服务器的catch
语句,我就可以了,但是我对其他调用返回的所有信息进行了分析,我可以在没有forkjoin
的情况下进行4次调用,但我想知道是否有更简单的方法错误是什么-http请求失败了吗?或者这是一个超时?如果其中一个内部对象出错,您希望返回的可观察对象是什么样子?换句话说,如果第i个可观测值出错,数组中的第i个值应该是什么?