Angular 如何清除Stackblitz中的计时器/间隔(角度)
在Stackblitz中开发带有计时器的应用程序时,运行间隔不会被清除。与中一样,在Stackblitz项目设置中,我指定在保存时重新加载。但当应用程序重新加载时,旧的间隔仍处于活动状态 在ngOnInit方法中,我使用以下代码在间隔上设置计时器:Angular 如何清除Stackblitz中的计时器/间隔(角度),angular,timer,stackblitz,Angular,Timer,Stackblitz,在Stackblitz中开发带有计时器的应用程序时,运行间隔不会被清除。与中一样,在Stackblitz项目设置中,我指定在保存时重新加载。但当应用程序重新加载时,旧的间隔仍处于活动状态 在ngOnInit方法中,我使用以下代码在间隔上设置计时器: window.setInterval(this.tick,1000) 在函数tick()中,我添加了日志记录,通过添加console.log('loginformation1')来查看发生了什么语句。 然后我将tick()函数的内容更改为consol
window.setInterval(this.tick,1000)代码>
在函数tick()中,我添加了日志记录,通过添加console.log('loginformation1')来查看发生了什么代码>语句。
然后我将tick()函数的内容更改为console.log('loginformation2')代码>之后,我可以每秒在控制台中看到“日志信息1”和“日志信息2”消息
我尝试通过添加一个计时器变量来跟踪间隔,如:
this.appTimer=window.setInterval(this.tick,1000)然后通过window.clearInterval(this.appTimer)在创建新计时器之前清除旧计时器在新运行中执行任何其他操作之前,请执行代码>。当然,因为它是一个新的运行,所以变量appTimer仍然是空的
在重新加载Stackblitz时,是否有办法清除所有活动间隔?刷新浏览器可以做到这一点,但这会启动和停止dev服务器,这似乎有些过分。尝试使用可观察的间隔,并使用可破坏的可观察时间与takeUntil()
从'rxjs'导入{interval};
@组件({…})
导出类ExampleComponent实现OnInit、OnDestroy{
private=new Subject();
ngOnDestroy(){this.destromed.next();}
恩戈尼尼特(){
间隔(1000)。管道(
takeUntil(这个被销毁了)
).subscribe(v=>console.log(v));
}
}
我甚至没有想过使用Ngondestory或rxjs函数。使用suscribe和unscribe绝对是我将来要使用的一种更整洁的工作方式。不幸的是,这并不能解决我的问题。当Stackblitz更新时,它不会经历通常的事件,比如ondestroy方法。这意味着间隔仍然没有被清除。因为这是一个StackBlitz问题,你能分享一个StackBlitz链接到一个例子吗?