Skip to content

Instantly share code, notes, and snippets.

@matthewhall
Created April 2, 2012 08:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matthewhall/2281723 to your computer and use it in GitHub Desktop.
Save matthewhall/2281723 to your computer and use it in GitHub Desktop.
Preload set of images using jQuery Deferreds
var preloadImgs = function(srcs) {
srcs = !$.isArray(srcs) ? [srcs] : srcs;
var dfd = $.Deferred(),
promises = [],
img,
len = srcs.length,
defer,
i = 0;
for (; i < len; i++) {
defer = $.Deferred();
img = $('<img />');
img.load(defer.resolve).error(defer.resolve);
promises.push(defer);
img.get(0).src = srcs[i];
}
$.when.apply($, promises).done(dfd.resolve);
return dfd.promise();
};
// Usage:
// Define some image URLs.
var imgs = [
"http://farm7.staticflickr.com/6091/6351031496_5a3a911905_b.jpg",
"http://farm7.staticflickr.com/6114/6350286799_fafd141b55_b.jpg",
"http://farm7.staticflickr.com/6038/6350286603_bc11e458f0_b.jpg",
"http://farm7.staticflickr.com/6106/6350286099_372bfe2cfa_b.jpg",
"http://farm7.staticflickr.com/6040/6350285637_114c94a159_b.jpg",
"http://farm7.staticflickr.com/6054/6351029458_664c6cf313_b.jpg"
];
$.when(preloadImgs(imgs))
.then(function() { // Success.
// Win!
},
function() // Error
// Fail.
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment