У меня есть несколько асинхронных задач, которые запускаются перед переходом на домашний экран. Я запускаю загрузочный счетчик до того, как эти задачи были инициированы, и закрываю загрузочный счетчик внутри метода ionViewWillLeave ().
Я ожидаю, что загрузочный счетчик продолжает загружаться, так как эти асинхронные задачи заканчивают sh их выполнение и один раз это сделано, загрузочный счетчик должен быть исключен только из метода ionViewWillLeave.
Мой текущий код выглядит следующим образом:
export class MyComponent implements OnInit{
ngOnInit(){}
buttonClicked(){
this.ionLoadingService.present();
zip(Obs1, Obs2).pipe(switchMap(()=>Obs3))
.subscribe(()=>{navigate('/app/home')});
}
ionViewWillLeave(){
this.ionLoadingService.dismiss();
}
}
export class IonLoadingService {
public loadingElement: HTMLIonLoadingElement;
private loaderPresented: boolean = false;
constructor(private loadingController: LoadingController) {
}
async present() {
if (!this.loaderPresented) {
this.loaderPresented = true;
this.loadingElement = await this.loadingController.create({
cssClass: 'custom-loading'
});
return await this.loadingElement.present();
}
}
Примечание. Все наблюдаемые являются вызовами API, которые выполняются вне зоны angular. Текущее поведение загрузки счетчика: он исчезает, как только начинает выполняться внешняя наблюдаемая.
Как решить эту проблему?