У меня есть несколько проблем с моим перехватчиком загрузки и предполагаемая гонка условий, которая вызывает эту ошибку: Uncaught (in promise) overlay does not exist
когда-то появляется в моем перехватчике загрузки / службе. до 5) http-вызовы на некоторых страницах, я решил создать перехватчик, который подсчитывал http-запросы для представления и отклонения наложения загрузки. Выглядит это примерно так:
export class LoadingInterceptor implements HttpInterceptor {
private totalRequests = 0;
constructor(private loading: LoadingService) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.totalRequests++;
if (this.totalRequests === 1) {
this.loading.present();
}
return next.handle(request).pipe(
finalize(() => {
this.totalRequests--;
if (this.totalRequests === 0) {
this.loading.dismiss();
}
})
);
}
}
Для моей службы загрузки я попытался с помощью logi c проверить, присутствовал ли загрузчик в обратном вызове, используя флаг true / false, а затем либо присутствует, либо отклоните его.
isLoading = false;
constructor(
public loadingController: LoadingController
) { }
async present() {
this.isLoading = true;
return await this.loadingController.create({
spinner: "circular",
translucent: true
}).then(a => {
a.present().then(() => {
if (!this.isLoading) {
a.dismiss().then(() => this.isLoading = false);
}
});
});
}
async dismiss() {
this.isLoading = false;
return await this.loadingController.dismiss().then(() => this.isLoading = false);
}
Однако, как я уже упоминал, время от времени у меня все еще возникает проблема гонки условий, когда возникает ошибка. У кого-нибудь есть мысли о том, что может вызвать проблему?