Jquery 图像预加载器的 Deferred 数组

Jquery array of Deferred for image preloader

我正在尝试在加载预定义数组中的所有图像后调用一个函数。

像这样尝试

for (var i = 0; i < length; i++) {
           d = $.Deferred();
           promises.push(p);

           img = new Image();

           img.onload = function(){
               p.resolve
           }
           img.src = srcs[i];
       }

$.when.apply($, promises).done(function(){
           defImages.resolve();
       })

没用。我做错了什么?

   //count of all page images
var img_count=$('img').length;
   //images loaded
var img_loaded=0;

$('img').load(function(){
 img_loaded++;
 if(img_loaded==img_count){
  console.log('all images loaded');
 }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


   <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/CC-Zero-badge.svg/100px-CC-Zero-badge.svg.png">
   <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/16/CC-BY_icon.svg/100px-CC-BY_icon.svg.png">
   <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/CC-BY-SA_icon.svg/100px-CC-BY-SA_icon.svg.png">