我如何发出许多AJAX请求,然后在它们全部完成后调用一个函数?

问题描述 投票:0回答:1

我有以下返回jQuery延迟对象的函数:

function performAjaxRequest(arg1, arg2, arg3) {
    return $.ajax({
        url: someurl,
        type: "POST",
        data: { arg1: arg1, arg2: arg2, arg3: arg3 }
        success: function(data) {
            //do something
        },
        error: function(data) {
            //do something else
        }
   });
}

[接下来,我有以下函数进行一些处理,然后在循环内调用上面的函数。最后,它将performAjaxRequest()返回的延迟对象推入数组并返回该数组:

function putDeferredsInArray() {
    //do some processing
    var deferreds = [];
    var arg1, arg2, arg3 = []; //these arrays are being populated, but that is not important
    var someCount = $('#someFieldThatHasCount').val();
    for (var i = 0; i < someCount; i++) {
        //put the deferred objects in array
        deferreds.push(performAjaxRequest(arg1[i], arg2[i], arg3[i]));
    }
    return deferreds;
}

最后,我有最后一个函数,该函数通过为从上述函数返回的延迟对象调用.done来完成处理:

function completeProcessing() {
    putDeferredsInArray().done(someCallback(arg)); //getting the error here
}

我是否遗漏了一些东西?由于某些原因,即使我收到一个错误消息“对象不支持属性或方法'done'”,也会调用someCallback(arg)。我对jQuery延迟对象的理解可能不完整,因此如果我的实现错误,请更正我。我只需要在every

AJAX请求完成后运行回调函数。

我有以下返回jQuery延迟对象的函数:function performAjaxRequest(arg1,arg2,arg3){return $ .ajax({url:someurl,type:“ POST”,data:{...

javascript jquery ajax jquery-deferred
1个回答
1
投票

您真的很亲密。 :-)您的putDeferredsInArray返回一个不带donearray

© www.soinside.com 2019 - 2024. All rights reserved.