Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何查找两个连续请求之间经过的时间?_Javascript - Fatal编程技术网

Javascript 如何查找两个连续请求之间经过的时间?

Javascript 如何查找两个连续请求之间经过的时间?,javascript,Javascript,我选择了两个复选框,每个复选框都会引发一个ajax请求,以便从服务器获得响应。当发出最后一个请求后至少有2秒的间隔时,我需要调用一个方法。有什么想法吗?这意味着我不想在连续单击复选框的时间间隔小于2秒时调用这些方法。设置一个将在2秒后激活的超时,然后取消它,并在有人单击另一个复选框时重新启动它 var timeout; var checkboxClickHandler = function() { clearTimeout(timeout); var timeout = setT

我选择了两个复选框,每个复选框都会引发一个ajax请求,以便从服务器获得响应。当发出最后一个请求后至少有2秒的间隔时,我需要调用一个方法。有什么想法吗?这意味着我不想在连续单击复选框的时间间隔小于2秒时调用这些方法。

设置一个将在2秒后激活的超时,然后取消它,并在有人单击另一个复选框时重新启动它

var timeout;
var checkboxClickHandler = function() {
    clearTimeout(timeout);
    var timeout = setTimeout(function() {
          // Your logic.
    }, 2e3);
};

设置一个将在2秒钟内激活的超时,并在有人单击另一个复选框时取消它并重新启动它

var timeout;
var checkboxClickHandler = function() {
    clearTimeout(timeout);
    var timeout = setTimeout(function() {
          // Your logic.
    }, 2e3);
};

如果是使用ajax调用的服务器,则可以使用调用的标识和时间对在服务器上为特定客户端(例如,使用mysql表)设置锁定。下次打电话时,请检查表中最近的电话。当发现呼叫且呼叫时间超过2秒时:删除该呼叫并继续。
我也可以想到一个cookie解决方案,但是像这样的东西应该在服务器端反复检查,因为本地代码可以被操作。

如果是您的服务器,您可以使用ajax调用它,您可以使用调用的标识和时间对为特定的客户端(例如,使用mysql表)在服务器上设置一个锁。下次打电话时,请检查表中最近的电话。当发现呼叫且呼叫时间超过2秒时:删除该呼叫并继续。
var timeOut=0;
$(".selector").on('change',function(){
    if(timeOut == 0)
    {
        timeOut=2;  //change timeOut variable to "2" to be used in if condition above
        //your ajax request code ;  
        setTimeout(function(){timeOut=0},2000);   // changing back timeOut to 0 after 2 sec.
    }
});

我也可以想到一个cookie解决方案,但是像这样的东西应该在服务器端进行双重检查,因为本地代码可以被操作。

上面的方法会在点击复选框后等待2秒钟,并在点击复选框的次数上执行该方法。但是,当请求在2秒内发出时,我想取消请求(不调用方法)。这意味着我只想执行最后一个请求。单击复选框后,上述方法将等待2秒钟,并在单击复选框的次数内执行该方法。但是当请求在2秒内发出时,我想取消请求(不调用方法)。这意味着我想只执行最后一个请求。取变量timeOut=0,然后在触发更改事件后检查timeOut的值(如果为零),然后执行ajax请求,将timeOut更改为2,并在2秒后将其更改回0,因此,如果更改事件触发器在2秒内触发,则它无法通过if cond.&ajax调用无法执行take variable timeOut=0然后在触发更改事件后检查超时值(如果为零),然后执行ajax请求并将超时值更改为2,然后在2秒后将其更改回0,这样,如果在2秒内更改事件触发器,则它无法通过if cond.&无法执行ajax调用
var timeOut=0;
$(".selector").on('change',function(){
    if(timeOut == 0)
    {
        timeOut=2;  //change timeOut variable to "2" to be used in if condition above
        //your ajax request code ;  
        setTimeout(function(){timeOut=0},2000);   // changing back timeOut to 0 after 2 sec.
    }
});