jquery - 如何在 jQuery 中延迟请求?

标签 jquery request delay

我正在使用 jQuery 向 PHP 文件发送一些“针对每个选中的复选框”请求。

如何延迟 jQuery 中的请求(例如每隔一个请求)到 PHP 文件?

脚本同时发送所有请求。

var checked = [] 
$("input[name='checkbox[]']:checked").each(function (){
checked.push(parseInt($(this).val()));
//console.log($(this).val());

var id = $(this).val();

  if (!!window.EventSource) {
     var source = new EventSource("request.php?id="+id+"");
     source.addEventListener('message', function(e) {

        var data = JSON.parse(e.data);
        var entry = data.entry;
        $("#status_"+id+"").html(entry);

        this.close();
        return; 
      }, false);
  }
});

最佳答案

第一个解决方案:

您可以使用setInterval()来做到这一点

$("input[name='checkbox[]']:checked").each(function (){
    var that = $(this); // reference to each checkbox
    setInterval(function(){ // set function to be executed after delay
       checked.push(parseInt(that.val()));
       //console.log(that.val());

      var id = that.val()
      ...
    }, 5000); //set the delay
});

这将使每次迭代延迟 5 秒。 但在这里,您必须在使用 setInterval 函数之前记住每个复选框,因此请提取 $(this),如上面的示例所示。

第二种解决方案:

您还可以查看 when()来自 JQuery 的方法。等待每个 Ajax 调用完成。这可能会更有效。

因此,您可以将复选框分成多个 block ,并同时处理每个 block ,然后调用另一个 block 。这样您就可以更快地完成所有请求,而无需同时抛出所有内容。

关于jquery - 如何在 jQuery 中延迟请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49221561/

相关文章:

c# - Entity Framework 代码第一次延迟

javascript - 如何使用 javascript 来验证表单?

javascript - 如何在gridview中的c#后面的代码中访问html输入类型的文本

node.js - 如何修改nodejs请求默认超时时间?

Twitter oauth 请求 token 响应代码 401

asp.net - 为什么页面处理的 AspNetSessionData 阶段会延迟我的页面 20 秒以上?

html - 尝试制作 div 幻灯片

javascript - 根据输入类型 = radio/checkbox/select 使用 jQuery 进行验证

javascript - 为什么使用 jQuery 组件的函数调用会重新加载 xhtml 页面?

ruby-on-rails - 使用 Rspec 测试 DELETE 请求的最佳方法?