我想在$ .when函数中使用image.onload

时间:2015-11-16 13:37:23

标签: jquery angularjs

我在循环中加载动态图像。我有一些要求 在下面的代码中,当我加载图像然后然后只警报火,当警报1点火然后只警报2火。

我的代码是

   for(int i=0;i<5;i++)
     {
    $.when(function(){

   var img771 = new Image();

    img771.src = imggg[i];
    img771.onload=function(){
        alert("1");
       //after image becomes loaded then and then only alert 2 fires in Done functionality.
    }


    }  ).done(function () {
        alert("2");

    });
    }

1 个答案:

答案 0 :(得分:1)

要将图像加载转换为(jQuery)承诺,请使用:

function imageLoad(url) {
    return $.Deferred(function(def) {
        var img = new Image();
        img.onload = function() {
            def.resolve(img);
        };
        img.src = url;
    });
}

然后,您可以为图像创建一个Promise数组:

var promises = imggg.map(imageLoad);

然后将其传递给$.when

$.when.apply($, promises).then(function() {
     console.log("all images loaded");
});