Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Ionic 5中ngDestroy和路由更改后,setInterval继续运行_Javascript_Angular_Ionic5 - Fatal编程技术网

Javascript 在Ionic 5中ngDestroy和路由更改后,setInterval继续运行

Javascript 在Ionic 5中ngDestroy和路由更改后,setInterval继续运行,javascript,angular,ionic5,Javascript,Angular,Ionic5,我有一个具有以下功能的模式(页面): private countdownTime : number = 20; private logoutCountdown : any; ngOnInit() { this.startLogout(); } ngOnDestroy(){ clearInterval(this.logoutCountdown); } startLogout(){ this.logoutCountdown = setInte

我有一个具有以下功能的模式(页面):

  private countdownTime : number = 20;
  private logoutCountdown : any;

  ngOnInit() {
    this.startLogout();
  }

  ngOnDestroy(){
    clearInterval(this.logoutCountdown);
  }

  startLogout(){
    this.logoutCountdown = setInterval(() => {
      this.countdownTime--;
      console.log(this.countdownTime);
      if (this.countdownTime == 0) {
        this.logout();
      }
    }, 1000)
  }

  closeModal(){
    clearInterval(this.logoutCountdown);
    this.modal.dismiss();
  }

  logout(){
    clearInterval(this.logoutCountdown);
    this.modal.dismiss();
    this.auth.logout().then();
  }

20秒后,它关闭,但仍在另一个路由中运行setInterval,是否有理由在该页面中clearInterval不工作?这与app.module.ts imports中的modal的PageModule有一定关系?

查看您的代码后,不清楚出了什么问题。我能想到的唯一一件事是,您无意中创建了多个模态或其他对象的实例。您可以尝试将
logoutCountdown
countdown
变量提取到singleton服务中,以便确保一次只运行一个间隔。您是否有stackblitz?您的代码看起来应该可以调用Ngondestory吗?你有没有为你的模特检查过?在离子模态中,它们不是真正的惰性加载,而是作为模块的一部分加载。因此,它们可能会一直保存在内存中,直到承载modal的模块被销毁。