Akita Observable OnCompleted 从不触发

Akita Observable OnCompleted Never Fires

在我的 Angular 8 应用程序中,我调用了 Api 服务,然后将数据写入 Akita 实体存储以用于后续请求。为此,我使用 mergeMap 以同步方式发送请求。

我有一些额外的请求,我希望以并发方式使用带有此函数的 forkJoin 执行,但是,我发现 akita selectAll 函数的以下问题不会触发 onCompleted function/event。它 returns 数据但 onCompleted 永远不会触发。让 Observable 处于不完整状态。

如果我去掉对秋田实体店的调用。我可以看到 Api 调用 getTeams Observable 函数完成。我将调试代码添加到 akita 实体存储调用中,并看到 onCompleted 从不触发。我不确定为什么,但也许我做错了什么。

函数:

   getTeams(): Observable<Team[]> {
     return this.teamApiService.getTeams().pipe(
      mergeMap((teams) => {
        this.teamStore.set(teams);
        return this.teamQuery.selectAll({ sortBy: 'name' });
      })
     );
   }

调用函数:


   this.teamStateService.getTeams().subscribe(
      data => console.log('GOT getTeams:', data),
      err => console.log('Error:', err),
      () => console.log('getTeams: Completed')
    );

我应该会看到以下结果:

GOT getTeams: .... 
getTeams: Completed

然而,我只是得到

GOT getTeams: ....

您可以强制完成。您可以添加 take(1):

return this.teamQuery.selectAll({ sortBy: 'name' }).pipe(take(1));