Ajax循环等待完成

时间:2019-06-30 20:10:48

标签: jquery ajax

我在循环中有一个ajax调用:

$.each(chunkedImages, function(index, image) {
    $.ajax({
        type: 'POST',
        url: url,
        data: {images: image, key: key},
    }).success(function( data ) {
        countConvertedImages += data;

        if( index === chunkedImages.length-1 ) {
            console.log( countConvertedImages );
        }
    });

});

我的问题是“ countConvertedImages”变量不是最新的。由于某种原因,里面没有正确的值。我认为这与ajax调用的顺序有关,因为它们可能尚未完成。

所有ajax调用结束后如何输出内容?

2 个答案:

答案 0 :(得分:0)

使用$ .when(如下所述)

 $.when(
                $.each(chunkedImages, function (index, image) {
                    $.ajax({
                        type: 'POST',
                        url: url,
                        data: { images: image, key: key },
                        success: function (data) {
                            countConvertedImages += data;
                            if (index === chunkedImages.length - 1) {
                                console.log(countConvertedImages);
                            }
                        }
                    })
                })
            ).done(function () {
            });

答案 1 :(得分:0)

谢谢您的链接:How do I return the response from an asynchronous call?

使用.ajaxStop()引导我找到适合我的解决方案

$(document).one("ajaxStop", function() {
    ...
});

是我的理想之选:https://api.jquery.com/ajaxStop/