jQuery each循环中隔一段时间后,再执行下一个循环

初步涉及脚本,请各位大神给予帮忙。
脚本如下,在执行ajax异步调用后,会到后台执行相关方法,需要时间等待。所以需要延长时间后再进入第二次循环。请问怎么实现?是用setTimeOut吗?又怎么实现?

$('#btnExecute').click(function(){

 $('#tbFileList').find(":checkbox:checked").each(function(){

var filename= $(this).parents(".ckc").find('#lblname').text();
var filepath= $(this).parents(".ckc").find('#lblpath').text();
var batpath="d:\2.bat";

$.ajax({
type : "POST",
contentType : "application/json",
url : "fileListServlet?filename=" + filename + "&filepath="
+ filepath + "&batpath=" + batpath + "&action=testcase" ,
dataType : 'json',
success :function(){

    }
});

})

});

应该把ajax异步改同步

 $.ajax({ 
type : "POST", 
contentType : "application/json", 
url : "fileListServlet?filename=" + filename + "&filepath=" 
+ filepath + "&batpath=" + batpath + "&action=testcase" , 
dataType : 'json',
async : false,//加上这个,变成同步调用
success :function(){
    }
});

async: false
ajax加上就不会异步执行了

考虑下转变一下思路,ajax默认情况异步执行,开始调用时告知用户处理中,在回调函数success :function(){ }}方法体内执行调用成功后的代码,并告知处理成功。
当然也可以使用async:false参数改成同步,这两种方法都可以避免使用setTimeout或者setInterval方法提高代码复杂度。

这种建议一次性提交给后台批量处理,而不是批量调用后台;
如果非要这样的话可以用递归的方式,返回后在执行下一个ajax请求

$('#btnExecute').click(function(){
  var fileList=$('#tbFileList').find(":checkbox:checked");
    doServlet(0);
    });
 function doServlet(fileIndex){
     if(fileIndex<fileList.length){
        var filename=fileList[fileIndex].parents(".ckc").find('#lblname').text();
        var filepath= fileList[fileIndex].parents(".ckc").find('#lblpath').text();
        var batpath="d:\2.bat";
        $.ajax({ 
            type : "POST", 
            contentType : "application/json", 
            url : "fileListServlet?filename=" + filename + "&filepath=" 
            + filepath + "&batpath=" + batpath + "&action=testcase" , 
            dataType : 'json',
            success :function(){
                doServlet(++fileIndex);
            }
        });
     }
 }

转换思维吧,不要请求那么频繁

那你只需要 把 第2个循环 写在 ajax 的 异步执行的 位置。完成 无刷新时 再执行 第二个循环

那你只需要 把 第2个循环 写在 ajax 的 异步执行的 位置。完成 无刷新时 再执行 第二个循环

朋友给的用setInterval的写法,也贴出来,如有需要,请参考

$('#btnExecute' ).click( function () {
var sleepTime = 2000;
var i = 0;
var arrLength = $( '#tbFileList').find( ":checkbox:checked" ).length;

var interval = setInterval( function () {
    var filename = $( '#tbFileList').find( ":checkbox:checked:eq(" + i + ")" ).parents(".ckc" ).find('#lblname' ).text();
    var filepath = $( '#tbFileList').find( ":checkbox:checked:eq(" + i + ")" ).parents(".ckc" ).find('#lblpath' ).text();
    var batpath = "d:\\2.bat";

    $.ajax({
        type: "POST",
        contentType: "application/json" ,
        url: "fileListServlet?filename=" + filename + "&filepath="
                + filepath + "&batpath=" + batpath + "&action=testcase" ,
        dataType: 'json',
        success: function () {

        }
    });

    i++;
    if (i == arrLength) {
        clearInterval(interval);
    }
}, sleepTime);

});