单击按钮,我每隔3分钟调用一次Ajax函数
intervalId = setTimeout(function(){ searchSiteDetailViaAjax() }, 180000);
和停止按钮我停止了这个
clearTimeout(intervalId);
intervalId = null;
最初几次运行正常,但是在执行clearTimeout之后,定时器一次又一次地调用Ajax函数。
答案 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
。
听起来发生的事情是您将要执行的函数排队,然后再次单击该按钮,您将对另一个执行进行排队并接收不同的句柄。单击停止按钮将无法再清除导致多次执行的先前句柄。