求救, 这样的定时器该怎么清除?
需求就是 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);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论
评论(1)
你需要清除的是fixed函数内部的定时器,而不是外部的定时器