Javascript JQuery$。使用ajax数组时

Javascript JQuery$。使用ajax数组时,javascript,jquery,Javascript,Jquery,我正在尝试获取$。当使用我的代码时。情况是,我有一个方法可以激发大量Ajax请求,我想在请求运行时为用户显示一个加载尖叫。什么时候才是我可以藏起来的时候。根据我对$的了解,以下代码应该在时工作,但when函数永远不会启动 self.createTaggingDialog(self); var ajaxArray = new Array(); self.containers.each(function () { var ImageClass = $(this).ImageTags();

我正在尝试获取
$。当
使用我的代码时。情况是,我有一个方法可以激发大量Ajax请求,我想在请求运行时为用户显示一个加载尖叫。什么时候才是我可以藏起来的时候。根据我对
$的了解,以下代码应该在
时工作,但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
达到$时的值

标记用户:

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, "");
        }
    });
}
试一试


您不应该将
$
作为上下文而不是
窗口
传递吗?@m90 Yes可能有to@m90此示例似乎使用
window
作为此操作的第一个参数,但现在功能立即启动,它不会等待ajax请求发出finish@DoomStoneImageClass.TagUser返回了什么(ImageClass,username)我假设
self.containers。每个
都不是异步的,那么为什么需要
jQuery。当
通常用于延迟时?只需将回调中的代码放在下面的集合中循环即可。。。
$.when.apply($, ajaxArray).done(function () {
    console.log("DONE!");
    self.RemoveTagggingDialog(self);
});