Как использовать loadingController без использования обещания? - PullRequest
0 голосов
/ 11 июля 2019

Я использую загрузочный контроллер, используя обещание, но некоторые загрузчики будут отключены, но иногда они не будут отклоняться в Ionic 4. Как использовать контроллер загрузки, используя наблюдаемый или поведенческий предмет в ионном 4?

Я пробовал различные ссылки, доступные в интернете, и проблема та же, иногда она не исчезнет.

Мой код здесь: - 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 дней.

1 Ответ

1 голос
/ 11 июля 2019

Переписать текущую функцию:

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

изменить функцию getHomePage следующим образом:

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

Я думаю, что вы будете полезны.

...