秋田可观察到完成不发射

时间:2019-06-26 19:32:42

标签: angular observable angular-akita

在Angular 8应用程序中,我调用了Api服务,然后将数据写入秋田实体商店以用于后续请求。我通过使用mergeMap以同步方式发送请求来做到这一点。

我还有一些其他希望通过此函数与forkJoin同时执行的请求,但是,我发现akita selectAll函数存在以下问题不会触发onCompleted函数/事件。它返回数据,但是onCompleted永远不会触发。使Observable处于不完整状态。

如果我删除对秋田实体商店的呼叫。我可以看到对getTeams Observable的Api调用功能已完成。我将调试代码添加到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: ....

1 个答案:

答案 0 :(得分:1)

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

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