求救, 这样的定时器该怎么清除?

求救, 这样的定时器该怎么清除?

需求就是 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

回到顶部