【发布时间】:2019-03-01 21:57:24
【问题描述】:
我有几个 observables 请求。 每个 observable 请求都是递归调用,当没有更多数据时,它会调用 EMPTY。
例如:
request1 = recursive observable call
request2 = recursive observable call
request3 = recursive observable call
然后我用forJoin
forJoin(request, request2, request3).subscribe();
当其中任何一个完成时,forkJoin 将完成回调。它实际上并没有等待所有可观察对象完成。 我检查了 rxjs 文档,它提到了
当所有 observables 完成后,发出每个 observables 最后发出的值。
因为我不关心这些可观察对象的返回值,所以它不会向 forkJoin 观察者发出值。然后我发现在这种情况下,如果只有一个完整的,forkJoin 观察者会收到完整的通知。
这是我确实需要发出值才能等待所有可观察对象完成的可观察限制吗?
非常感谢。
【问题讨论】:
-
实际上你需要什么行为非常令人困惑。
forkJoin不会完成,除非所有源 Observable 发出至少一个值。如果一个源刚刚完成并且没有发出任何内容,forkJoin将永远不会完成。 -
在我的测试中,当一个发射完成时,forkJoin 实际上完成了。最后我解决了在完成之前发出一个值。
-
您可以只返回 of(true) 而不是 EMPTY,这将用一个值完成流。
标签: rxjs observable rxjs6