Наблюдаемая Акита никогда не стреляет - PullRequest
1 голос
/ 26 июня 2019

В моем приложении Angular 8 я звоню в сервис Api, затем записываю данные в хранилище сущностей Akita, которое будет использоваться для последующих запросов. Я делаю это с помощью mergeMap для отправки запросов синхронно.

У меня есть несколько дополнительных запросов, которые я хочу выполнить параллельно с forkJoin с этой функцией, однако я обнаружил, что следующая проблема с функцией akita selectAll не вызывает функцию / событие onCompleted. Он возвращает данные, но onCompleted никогда не запускается. Оставить наблюдаемое в неполном состоянии.

Если я уберу звонок в магазин Akita Entity. Я вижу вызов 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: ....

1 Ответ

1 голос
/ 28 июня 2019

Вы можете заставить его завершить.Вы можете добавить take(1):

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

...