如果所有可观测值均已完成,则返回一个空的可观测值

时间:2018-10-12 07:41:34

标签: rxjs

我有一个方法cancelPreload,其中我在一个数组内收集了nObservable<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却不能。

0 个答案:

没有答案