I have the following function that returns a jQuery deferred object:
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
}
});
}
Next, I have the following function which does some processing, then calls the function above inside a loop. Finally, it pushes the deferred objects returned by performAjaxRequest()
into an array and returns the array:
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;
}
Finally, I have one last function that completes processing by calling .done
for the deferred objects returned from the above function:
function completeProcessing() {
putDeferredsInArray().done(someCallback(arg)); //getting the error here
}
Have I left something out? For some reason, someCallback(arg)
is called even though I'm getting an error that says:
Object doesn't support property or method 'done'
My understanding of jQuery deferred objects may be incomplete, so please correct me if my implementation is wrong. I just need the callback function to run after every AJAX request is complete.