angular - Akita Observable OnCompleted 从不触发

标签 angular observable angular-akita

在我的 Angular 8 应用程序中,我调用 Api 服务,然后将数据写入 Akita 实体存储以用于后续请求。我通过使用 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: ....

最佳答案

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

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

关于angular - Akita Observable OnCompleted 从不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56779866/

相关文章:

javascript - 使用 NodeJS/ExpressJS 后端服务 Angular 通用应用程序

node.js - nestjs 中的 Rxjs - 可观察到的订阅错误

angular - 当 BehaviorSubject 值 === false 时延迟可观察流

angular - 登录后更新 Angular 4 页面的最简单方法

angular - 503 好的(来自 serviceWorker)

angular - 类型 'pipe' 上不存在属性 'AngularFireObject<{}>'

TypeScript - 等待 observable/promise 完成,然后返回 observable

javascript - 如何从 rxjs 中的错误中恢复?

带有 Akita 状态管理的 Angular 解析器