我有两个复选框,每个选项会引发一个ajax请求,以便从服务器获得响应。在最后一个请求发出后至少有2秒的间隙时,我只需要调用一次方法。任何的想法?这意味着我不想在连续点击复选框不到2秒的间隙时调用方法。如果请求之间的时间差距小于2秒,我如何取消请求。请注意,我希望在最后一个请求没有跟随其他请求2秒之后才触发该方法一次。
var timeout;
clearTimeout(timeout);
timeout = setTimeout(function () { // call method }, 2000);
答案 0 :(得分:0)
请注意,对于上次提出的请求,我只想对该方法执行一次。
您没有显示任何代码,但假设您已经有一个执行ajax请求的函数doAjax()
,您可以确保在任何两秒钟内的最后一次点击后两秒钟之前不会调用它使用setTimeout()
function做这样的事情:
var timerID;
document.getElementById("yourCheckboxIdHere").onclick = function() {
clearTimeout(timerID);
timerID = setTimeout(doAjax, 2000);
};
请注意,当doAjax
作为参数传递给setTimeout()
函数时,不后面会有括号。
如果您需要将参数传递到doAjax()
函数,请将setTimeout()
的行更改为:
timerID = setTimeout(function(){
doAjax(parameters, go, here);
}, 2000);