Skip to content

Instantly share code, notes, and snippets.

@adamesque
Created February 16, 2011 23:38
Show Gist options
  • Save adamesque/830561 to your computer and use it in GitHub Desktop.
Save adamesque/830561 to your computer and use it in GitHub Desktop.
Uses jQuery's new Deferred object to help with image loading
/**
* Helper function for passing arrays of promises to $.when
*/
jQuery.whenArray = function ( array ) {
return jQuery.when.apply( this, array );
};
/**
* Accepts a single image src or an array of image srcs.
* @return Promise that resolves once images have loaded.
*/
function preloadImages (srcs) {
var dfd = $.Deferred(),
promises = [],
img,
l,
p;
if (!$.isArray(srcs)) {
srcs = [srcs];
}
l = srcs.length;
for (var i = 0; i < l; i++) {
p = $.Deferred();
img = $("<img />");
img.load(p.resolve);
img.error(p.resolve);
promises.push(p);
img.get(0).src = srcs[i];
}
$.whenArray(promises).done(dfd.resolve);
return dfd.promise();
}
@cobbweb
Copy link

cobbweb commented Feb 26, 2013

If there's an error loading the image shouldn't it reject the deferred?

@aozora
Copy link

aozora commented Mar 11, 2013

please add a usage sample

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment