在jquery中使用for循环然后在每次迭代帮助之间暂停

时间:2011-05-01 03:26:55

标签: jquery ajax for-loop delay settimeout

怎么回事,

需要一些帮助,一些for循环和暂停。我自己做了一些研究,并且一直在运行setTimeout()函数,但我需要帮助更多地了解它,或者是否有人可以帮我解决如何将其实现到我的代码中或者是否有其他方法。

    $(document).ready(function() {
            for(i=0; i<counter; i++)
            {
                dataCounter = i;
                $.ajax({
                  url: 'file.php',
                    dataType: 'json',
                    data: {count: dataCounter},
                    error: function(){
                        alert('Error loading XML document');
                    },
                    success: function(data){
                        $("#contents").html(data);  
                    }
                });
            }

});

我想知道如何在继续我的$ .ajax函数之后暂停,然后继续我的下一个增量。

请帮忙!谢谢:))

3 个答案:

答案 0 :(得分:2)

怎么样......

(function() {

    var index = 0;

    function next() {

        setTimeout(function() {
            if (index == counter) {
                return;
            }

            // Do what you need to do   
            index++;
            next();
        }, 1000);

    }

})();

或者,您可以使用Datedo { ... } while()循环制作sleep style function。但是setTimeout()要好得多,因为任何JavaScript sleep 样式函数都必须在循环之前进行循环,直到它准备好完成,这实际上不是 sleep

答案 1 :(得分:2)

你的意思是“等待请求完成发送下一个”?

如果是,请在.ajax来电中再设置一个参数。

async: false

来自jQuery .ajax doc

  

async :: Boolean - 默认值:true

     

默认情况下,发送所有请求   异步(即设置为   默认为true)。如果你需要   同步请求,设置此选项   为假。跨域请求和   dataType:“jsonp”请求没有   支持同步操作。注意   同步请求可能   暂时锁定浏览器,   禁用任何操作时   请求已激活。

答案 2 :(得分:0)

http://jsfiddle.net/samccone/hkjpA/

嗨andrewliu这个例子应该可以正常工作,希望这能帮到你