我有以下函数返回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请求完成后运行回调函数即可。