0

我有两个复选框,每个复选框都会引发一个 ajax 请求,以便从服务器获得响应。在发出最后一个请求后至少有 2 秒的间隙时,我只需要调用一次方法。任何的想法?这意味着我不想在连续单击复选框少于 2 秒的间隙时调用这些方法。如果请求之间的时间间隔小于 2 秒,我如何取消请求。请注意,我希望在最后一个请求之后没有其他请求 2 秒后仅触发一次该方法。

var timeout; 
clearTimeout(timeout); 
timeout = setTimeout(function () { // call method }, 2000); 
4

1 回答 1

0

请注意,对于最后一次发出的请求,我只执行一次该方法。

您没有显示任何代码,但假设您已经有一个执行 ajax 请求的函数,您可以通过使用该函数执行类似这样的操作doAjax(),确保在任何两秒内最后一次单击后两秒之前不会调用它:setTimeout()

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);
于 2013-04-05T07:19:21.213 回答