Javascript每个循环迭代等待ajax完成

时间:2013-05-27 12:35:03

标签: jquery each

我有以下代码:

 $(".subform_book_uploading").each( function(index, subform) {

            var bookId      =   $(subform).find(".form_book").val();
            var filePath    =   $(subform).find(".form_file").val();

            //If values are not empty
            if(bookId != 0 && filePath != 0) {

                $.ajax({
                    url: "my Url",
                    data: "my Data",
                    dataType: "json",
                    async: true,
                    success: function(data) {
                        Process response

                    }
                });
            }
        });

问题是看起来每次迭代都等待ajax完成。在" Firebug"我看到所有的ajax请求都是串行执行的。有没有办法并行执行它们?

2 个答案:

答案 0 :(得分:1)

我的结论是,它实际上是以它应该的方式工作。调试过程使其按顺序执行。

我建议使用fiddler而不是firebug来观察正在发生的事情。当你执行中断时,很明显你得到了你已经完成的请求的响应,所以在你继续断点并发出下一个请求之前,你得到了之前的回复。

尝试fiddler并告诉我它是否相同。

答案 1 :(得分:0)

$(“。subform_book_uploading”)。each(function(index,subform){

        var bookId      =   $(subform).find(".form_book").val();
        var filePath    =   $(subform).find(".form_file").val();

        //If values are not empty
        if(bookId != 0 && filePath != 0) {

           setTimeout(function(){ $.ajax({
                url: "my Url",
                data: "my Data",
                dataType: "json",
                async: true,
                success: function(data) {
                    Process response

                }
            });},500);
        }
    });