Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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
Jquery ajax调用之间的时间延迟_Jquery_Ajax - Fatal编程技术网

Jquery ajax调用之间的时间延迟

Jquery ajax调用之间的时间延迟,jquery,ajax,Jquery,Ajax,我正在尝试调用一次返回一行信息的服务。我要拿100行这样的。我希望每次点击服务之间有一个特定的时间间隔。不一定要精确,但至少200毫秒。我一直在使用jquery进行调用。比如: for 1 to 100 window.setTimeout(function(rowNumber){ $.ajax({ url: datatype: 'json' async:false success: function to display row });

我正在尝试调用一次返回一行信息的服务。我要拿100行这样的。我希望每次点击服务之间有一个特定的时间间隔。不一定要精确,但至少200毫秒。我一直在使用jquery进行调用。比如:

 for 1 to 100
    window.setTimeout(function(rowNumber){
    $.ajax({
    url: 
    datatype: 'json'
    async:false
    success: function to display row
    });
    }, 10000, someParam);
另外,我在
xmlhttp.onreadystatechange
函数中有这个调用。 发生的情况是,我在开始时得到了10秒的延迟,但随后所有行都出现了雪崩。每次通话之间我都需要延迟


谢谢

只需使用循环变量作为时间的乘数即可实现:

  for (var i=0;i<100;i++) {
    window.setTimeout(function(){
      $.ajax({
        url:
        datatype: 'json'
        async: false
        success: function to display row
      });
    }, i * 200);
  }

for(var i=0;i首先,您需要考虑在服务器中创建一个批量操作,以便在一次快照中重播所有信息

另一个重要的概念是,避免同步连接。在您的情况下,100连接将在同步过程中阻塞浏览器

所有元素都在同一时刻写入以供同步使用,浏览器被阻止以写入dom中的任何元素

第一: 请记住,浏览器有调用限制,用户确实可以在此配置中更改它,也许这不是您的解决方案,但将概念引入到第二个和第三个解决方案中,在这种情况下,我们会同时请求所有请求

HTML

JS

函数插入位置(位置,文本){
var元素=$(“#结果>li:n子项(“+(pos+1)+”),
html='
  • '+text+'
  • '; if(element.length==0){ $(“#结果”).append(html); }否则{ 元素之前(html); } } $(文档).ready(函数(){ 对于(var i=0;i
    基本上,您在循环中调用ajax,并且您需要确保在正确的位置添加新元素。insertPosition测试如果您已经在该位置有一个元素,如果您有一个,则函数将在该元素之前插入该元素。如果您没有,则他们将该元素插入最后一个位置。 另一个重要的函数是bind。 不,等等,当我有元素时,我会将它添加到列表中

    第二个(相同的html):

    var callbackFunction=function(num、max、returnhtml){
    num++;
    $(“#result2”).append(“
  • ”+returnhtml+”
  • ”);
    if(numsorry)格式!我无法使代码格式正常工作。也许我遗漏了一些东西。我对Ajax不太了解,但是如果您接受编辑,您的文章应该立即格式化。为了将来参考,您可以突出显示您的代码并使用
    {}
    按钮,或缩进您的代码4个空格。忘记这一点……我想您的问题已经得到了回答是的。我在这里用了10秒只是为了测试。另外,我不确定window.setTimeout为什么不起作用。这并不是说我是jquery或JS方面的专家。计时需要精确吗?或者只要介于10秒之间,您是否满意n?这似乎确实有效。谢谢,但如果你能给出一些简短的解释,那会有所帮助。它在一个循环中。我有一个setTimeout。那么为什么它不在每次调用后等待呢?ajax调用是否发生在不同的执行线程中?每个setTimeout调用都是异步的,这就是为什么它只在每次其他调用完成后运行。循环刚刚设置这是运行的时间,里面的代码将在200毫秒后运行。第二个超时将在400毫秒后运行,等等。请注意,如果请求的最长时间超过200毫秒,则此代码无法按预期工作,并且您有一个随机错误。@劳尔马汀您能给出一个证明吗?这是一个随机错误,请执行几次,然后查看数字是否总是在t中他遵守了正确的秩序。
    <ul id="result"></ul>
    
    function insertPosition(pos, text){
        var element = $("#result > li:nth-child(" + (pos+1) + ")"),
            html = '<li>' + text + '</li>';
        if (element.length === 0) {
             $("#result").append(html);
        } else {
           element.before(html);
        }
    }
    
    $(document).ready(function() {
        for(var i = 0; i < numberRequest; i++) {        
            $.ajax({
                url: '/echo/html/', 
                type: 'POST',      
                data: 'html=' + i,     
                cache: false,
                success: insertPosition.bind(this, i)
            });    
        }
    });
    
    var callbackFunction = function(num, max, returnhtml){
        num++;
        $("#result2").append('<li>' + returnhtml + '</li>');
        if (num<max) {
            callAjax(num,max);    
        }
    };
    
    function callAjax(num,max){
        $.ajax({
            url: '/echo/html/', 
            type: 'POST',      
            data: 'html=' + num,     
            cache: false,
            success: callbackFunction.bind(this, num, max)
        });  
    }
    
    $(document).ready(function() {
        callAjax(0,numberRequest);
    });
    
    var callbackFunction2 = function (num, max, returnhtml) {
        num++;
        $("#result3").append('<li>' + returnhtml + '</li>');
        if (num < max) {
            setTimeout(window.callAjax2.bind(window, num, max), 500);
        }
    };
    
    function callAjax2(num, max) {
        $.ajax({
            url: '/echo/html/',
            type: 'POST',
            data: 'html=' + num,
            cache: false,
            success: callbackFunction2.bind(this, num, max)
        });
    }
    
    $(document).ready(function () {
        callAjax2(0, numberRequest);
    });