@zlodiak

Живёт ли резолвер без блок подписки?

Есть такой резолвер:

export class SuperResolver implements Resolve<any> {
  constructor(private superService: SuperService, private store: Store<any>) {}
  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
    return this.superService.getSuper().pipe(
      tap(super) => {
        this.store.dispatch(superAction({ super }));
      })
    );
  }
}


Он срабатывает перед переходом пользователя на определённую страничку. В результате данные получаются через http и помещаются в стор.

Скажите пожалуйста, будет ли такой резолвер срабатывать каждый раз, если данные в сервис приходят через определённый интервал времени. Смущает то, что здесь нет подписки, то есть нет блока subscribe(). Следовательно поток никто не слушает.
  • Вопрос задан
  • 31 просмотр
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
Там вообще довольно сложный процесс, но коротко - все резолверы запускаются одновременно, в процессе работы складывают свои результаты в data, а роутер ждет через concatMap (и подписка которую вы не нашли внутри него) когда вся пачка завершиться, чтобы продолжить роутинг.

Т.е. любой резолвер должен завершиться. Запустить интервал здесь не получится, роутинг просто повиснет.
Такое лучше поместить в OnInit и прекращать при дестрое.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы