我有以下返回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
来完成处理:
AJAX请求完成后运行回调函数。function completeProcessing() { putDeferredsInArray().done(someCallback(arg)); //getting the error here }
我是否遗漏了一些东西?由于某些原因,即使我收到一个错误消息“对象不支持属性或方法'done'”,也会调用
someCallback(arg)
。我对jQuery延迟对象的理解可能不完整,因此如果我的实现错误,请更正我。我只需要在every
我有以下返回jQuery延迟对象的函数:function performAjaxRequest(arg1,arg2,arg3){return $ .ajax({url:someurl,type:“ POST”,data:{...
您真的很亲密。 :-)您的putDeferredsInArray
返回一个不带done
的array