0

$.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, "");
        }
    });
}
4

1 に答える 1

2

試す

$.when.apply($, ajaxArray).done(function () {
    console.log("DONE!");
    self.RemoveTagggingDialog(self);
});
于 2013-05-20T09:48:36.637 に答える