我有一个方法cancelPreload
,其中我在一个数组内收集了n
个Observable<void>
。我要实现的是,如果数组内的所有可观察对象都成功完成,则返回单个Observable<void>
。我正在将forkJoin
扩展运算符与...
运算符结合使用。问题是,当我调用cancelPreload
方法时,它仅执行myArrayOfObservables
内部的第一个可观察对象,而其他可观察对象以某种方式被忽略。知道为什么以及如何解决这个问题吗?
public cancelPreload(): Observable<void> {
...
some boring stuff
...
const myArrayOfObservables: Observable<void>[] = [obs1, obs2, ..., obsn]
return forkJoin(...myArrayOfObservables)
}
...
calling the method in other part of the app
...
this.cancelPreload.subscribe() // only obs1 get executed,
other observables inside
myArrayOfObservables are ignored
编辑:
我已经使用merge
运算符解决了该问题,但我不明白,为什么merge
可以工作,而forkJoin
却不能。