我目前正在使用forkJoin
等待Observable
(s)数组在pipe
(ing)和tap
(ping)之前完成。
我注意到如果数组为空,则不会发出任何内容,甚至无法tap
。我该如何解决这类问题?我应该只检查数组是否为空吗?
myFirstFunction(...) {
const observables = ...
return forkJoin(observables)
}
mySecondFunction(...) {
return myFirstFunction().pipe(tap(() => ...))
}
最佳答案
这是因为forkJoin
要求所有源Observable至少发出一项,而当没有源Observable时则什么也没有发出。但是,forkJoin
仍然会发送complete
通知,因此您可以使用defaultIfEmpty
运算符来确保它始终发出至少一个next
。
forkJoin(observables).pipe(
defaultIfEmpty(null),
).subscribe(...);
演示:https://stackblitz.com/edit/rxjs-kkd1qa?file=index.ts
关于RxJs-具有空数组的forkJoin,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53477784/