求救, 这样的定时器该怎么清除?
需求就是 xxx 半秒显示 半秒隐藏一次, 因为setinterval有延迟不准, 所以就用了这个方法。
这个定时器是写在tab页里的, 每次切换tab都会添加一次这个定时器, 导致速度越来越快。
不能去判断该定时器是否存在, 然后进行是否添加定时器操作。
因为要不停的调接口, 我就想在每次在添加这个定时器前, 把这个定时器删了, 该如何写?
var timeout ;function fixed() {
let startTime = new Date().getTime();
let count = 0;
count++;
let offset = new Date().getTime() - (startTime + count * 500);
let nextTime = 500 - offset;
if (nextTime < 0) nextTime = 0;
setTimeout(fixed, nextTime);
// 这里是显隐操作代码
if (!gisLayerLine10fd.getVisible()) {
gisLayerLine10fd.setVisible(true);
} else {
gisLayerLine10fd.setVisible(false);
}
if (!gisLayerLine110fd.getVisible()) {
gisLayerLine110fd.setVisible(true);
} else {
gisLayerLine110fd.setVisible(false);
}
}
我在调用fixed的地方, clearTimeout和赋null都不能清掉这个定时器。
if (timeout) { clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(fixed, 4000);
回答:
你需要清除的是fixed函数内部的定时器,而不是外部的定时器
clearTimeout(timeout)timeout = setTimeout(fixed, nextTime);
以上是 求救, 这样的定时器该怎么清除? 的全部内容, 来源链接: utcz.com/p/935681.html