在vue项目中是用了setInterval()。
this.queryTimer = setInterval(() => {
this.qryBatchCheckResult()
}, 5000)
这样直接使用没有问题 可以实现循环调用函数。
但是再后面需要 清除定时器时,使用clearInterval() 。
clearInterval(this.queryTimer)
这样使用是无法停止的。
如果这样:window.setInterval()
window.clearInterval()
就可以变成正常效果。
不加上window直接调用setInterval() 返回的并不是所谓的定时器id,而是下图的数据。
导致clearInterval(),无法清除定时器。
然后 使用window来调用
setInterval() 和 clearInterval(),或者只用window调用setInterval(),都是正常的。
关键就是setInterval(),能不能返回正常的定时器id。
根本的原因就是:vue重写了setInterval()方法。返回的是定时器对象,里面有个私有属性_id,在赋值是也可以直接使用。
所以如果不使用window调用,就要通过_id来拿到定时器id。如果统一使用window来调用,则没有任何不同。