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

时间:2019-12-03 15:49:25

标签: javascript jquery ajax jquery-deferred

我有以下函数返回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
}

我遗漏了一些东西吗?出于某种原因,即使出现错误消息,也会调用someCallback(arg)

  

对象不支持属性或方法“完成”

我对jQuery延迟对象的理解可能不完整,因此如果我的实现错误,请更正我。我只需要在每个 AJAX请求完成后运行回调函数即可。

0 个答案:

没有答案
相关问题