forkjoin不等待所有可观察变量完成,因为每个可观察变量均未发出值

问题描述 投票:1回答:1

我有几个可观察的要求。每个可观察到的请求都是递归调用,当没有更多数据时,它将调用EMPTY。

例如:

request1 = recursive observable call
request2 = recursive observable call
request3 = recursive observable call

然后我使用forJoin

forJoin(request, request2, request3).subscribe();

forkJoin将在其中任何一个完成时以complete回调。实际上,它并不等待所有可观察对象完成。我检查了rxjs文件,它提到

所有可观察物完成后,从每个可观察物发射最后一个发射的值。

由于我不在乎这些可观察对象的返回值,因此它不会向forkJoin观察器发出值。然后我发现,在这种情况下,如果只完成一个,则用完成通知forkJoin观察者。

这是我确实需要发出价值才能等待所有可观察对象完成的可观察限制吗?

非常感谢。

rxjs observable rxjs6
1个回答
0
投票

它是by design

参考here

[forkJoin短路,如果其中一个流完成而没有发出值。

由于EMPTY仅发出'complete'而没有其他内容,因此EMPTY将在此处完成。

实际上,forkJoin中的其他非空可观测对象仍将被订阅,但是由于forkJoin可能在它们之前完成(取决于forkJoin何时出现在EMPTY中,所以您可能无法在forkJoinforkJoin函数中处理它们。

© www.soinside.com 2019 - 2024. All rights reserved.