【发布时间】:2013-05-14 20:14:46
【问题描述】:
我正在尝试让$.when 使用我的代码。情况是我有一个触发大量 Ajax 请求的方法,我想在请求符文时为用户显示加载屏幕。什么时候是这样我以后可以隐藏它。鉴于我对$.when 的了解,以下代码应该可以工作,但永远不会触发 when 函数。
self.createTaggingDialog(self);
var ajaxArray = new Array();
self.containers.each(function () {
var ImageClass = $(this).ImageTags();
if (ImageClass != null) {
ajaxArray.push(ImageClass.TagUser(ImageClass, username));
}
});
$.when(ajaxArray, function () {
console.log("DONE!");
self.RemoveTagggingDialog(self);
});
这是ajaxArray 到达$.when 时的值
标签用户:
TagUser(self: ImageTags, username: string) {
return $.ajax({
type: "POST",
url: self.options.UrlTagUser,
data: {
username: username,
imageid: self.options.ImageId
},
success: function (data: UserAddJson) {
if (data.Successful) {
if (self.AddUserElement != null) {
self.AddUserElement.find('input').val('');
self.AddUserElement.modal('hide');
}
self.TagUserSuccess(self, data);
} else {
self.TagUserError(self, data.Message);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
self.TagUserError(self, "");
}
});
}
【问题讨论】:
-
我假设
self.containers.each不是异步的,那么为什么需要一个通常用于延迟的jQuery.when?只需将回调中的代码放在下面的集合中循环...
标签: javascript jquery