如果用户点击div,我会触发此功能。用户可以多次单击此div,从而多次触发该功能。
每次在函数运行时调用该函数,我希望当前运行的函数停止运行并重新开始。这很难描述,但我希望它有意义。基本上,我希望只有当用户在运行时不再触发该功能时,该功能才能完全运行。
有办法做到这一点吗?
答案 0 :(得分:3)
Javascript是单线程的。因此,在第一次点击附加的javascript运行完成之前,第二次点击不会得到处理。
您可以在此处详细了解javascript事件队列的工作原理:How does JavaScript handle AJAX responses in the background?
如果您正在使用jQuery动画之类的异步操作,那么这些操作将在计时器中运行一小部分,您可以在运行动画时按下后续按钮。在那个原因中,你需要停止动画。使用jQuery,您可以使用.stop(true, true)
方法停止当前动画,将其推进到完成并从队列中清除它。
如果您包含实际代码,我们可以针对您的情况提供更具体的答案。
答案 1 :(得分:3)
您的功能需要多长时间才能执行?听起来你最终想要限制点击次数,这样每X秒/毫秒只能注册一次。最好的方法是使用setTimeout延迟从单击执行函数,然后在每次用户单击时清除该超时。因此,如果他们在一秒内点击3次,它将只执行一次。
var timeout;
function myClickHandler(){
clearTimeout(timeout);
timeout = setTimeout(function(){
// Execute your code here
}, 1000); // 1000ms delay
};