如何在不使用 promise 的情况下使用 loadingController?

how to use loadingController without using promise?

我正在使用使用 promise 的加载控制器,但有些加载程序会关闭,但有时它不会在 Ionic 4 中关闭。 如何在 ionic 4 中使用 observable 或 behavior subject 加载控制器?

我试过网上的各种link,问题都是一样的,有时不会消失。

我的代码在这里:- Loaderservice.ts

isLoading = false;
  constructor(private loadingCtrl:LoadingController) {}

async present(){
     this.isLoading = true;
     return await this.loadingCtrl.create({}).then(a=>{
       a.present().then(()=>{
         if(!this.isLoading){
           a.dismiss().then(()=>console.log('abort presenting'));
         }
       });
     });
   }

   async dismiss(){
     this.isLoading = false;
     return await this.loadingCtrl.dismiss().then(()=> console.log('dismissed'));
   }

homepage.ts

getHomePage() {
    this.loadingService.present();
    let variationLatestProductsPriceArray = [];
    this.homepageService.getHomePageData().subscribe(response => {
      this.homePageModel = response['data'];
      let checkAddress = this.homePageModel["address"];
      if (checkAddress == true){
        console.log("address Saved");
        localStorage.setItem('newUser', 'true');
      } else {
        console.log("address not Saved");
        localStorage.setItem('newUser', 'false');
      }
      console.log("latestProducts", this.latestProducts);
      this.bannerList = this.homePageModel["slider"];
      this.loadingService.dismiss();

    }, (err) => {
      console.log(err);
      this.alert.myAlertMethod("OOPS ! NO INTERNET Please check your network connection.", err.error.message, data => {
        console.log("hello alert")
      });
      this.loadingService.dismiss();
    },()=>{
      this.loadingService.dismiss();
    });
  }

有时它工作正常并正确关闭它但有时它不会关闭。 我最近 5 天一直在调查这个问题。

重写当前函数:

  async present(){
         return await this.loadingCtrl.create({});
    }

将 getHomePage 函数修改为:

getHomePage() {
      this.loadingService.present().then(event => {
       event.present();
       -----
       event.dismiss();
     })
}

我想你会有所帮助。