在 Stackblitz 中开发带有计时器的应用程序时,运行之间的间隔不会被清除。如在 Stackblitz 项目设置中,我指定在保存时重新加载。但是当应用程序重新加载时,旧的间隔仍然处于活动状态。
在 ngOnInit 方法中,我使用代码在间隔上设置了一个计时器:
在函数 tick() 中,我添加了日志记录以通过添加语句window.setInterval(this.tick, 1000);
来查看发生了什么。console.log('log information 1');
然后我将我的 tick() 函数的内容更改为console.log('log information 2');
然后我可以看到“日志信息 1”和“日志信息 2”消息每秒都出现在我的控制台中。
我尝试通过添加一个计时器变量来跟踪间隔,例如:
this.appTimer = window.setInterval(this.tick, 1000);
然后在创建新计时器之前清除旧计时器,然后window.clearInterval(this.appTimer);
在新运行中执行任何其他操作之前。但是当然因为是新运行,所以变量 appTimer 还是空的。
有没有办法在重新加载 Stackblitz 时清除所有活动间隔?刷新浏览器可以解决问题,但这会启动和停止开发服务器,这似乎有点矫枉过正。