settimeout执行多次

时间:2017-08-10 04:04:25

标签: javascript timer settimeout

单击按钮,我每隔3分钟调用一次Ajax函数

intervalId = setTimeout(function(){ searchSiteDetailViaAjax() }, 180000);

和停止按钮我停止了这个

clearTimeout(intervalId);
intervalId = null;

最初几次运行正常,但是在执行clearTimeout之后,定时器一次又一次地调用Ajax函数。

2 个答案:

答案 0 :(得分:2)

听起来您希望使用setInterval()clearInterval()setTimeout()只运行一次,你说你希望它每3分钟运行一次,你就会想要使用setInterval()

setInterval MDN:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval

clearInterval MDN:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval

答案 1 :(得分:1)

听起来您可能需要在clearTimeout(intervalId);来电之前点击setTimeout

听起来发生的事情是您将要执行的函数排队,然后再次单击该按钮,您将对另一个执行进行排队并接收不同的句柄。单击停止按钮将无法再清除导致多次执行的先前句柄。