Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.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
Angular 如何清除Stackblitz中的计时器/间隔(角度)_Angular_Timer_Stackblitz - Fatal编程技术网

Angular 如何清除Stackblitz中的计时器/间隔(角度)

Angular 如何清除Stackblitz中的计时器/间隔(角度),angular,timer,stackblitz,Angular,Timer,Stackblitz,在Stackblitz中开发带有计时器的应用程序时,运行间隔不会被清除。与中一样,在Stackblitz项目设置中,我指定在保存时重新加载。但当应用程序重新加载时,旧的间隔仍处于活动状态 在ngOnInit方法中,我使用以下代码在间隔上设置计时器: window.setInterval(this.tick,1000) 在函数tick()中,我添加了日志记录,通过添加console.log('loginformation1')来查看发生了什么语句。 然后我将tick()函数的内容更改为consol

在Stackblitz中开发带有计时器的应用程序时,运行间隔不会被清除。与中一样,在Stackblitz项目设置中,我指定在保存时重新加载。但当应用程序重新加载时,旧的间隔仍处于活动状态

在ngOnInit方法中,我使用以下代码在间隔上设置计时器:
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链接到一个例子吗?