Skip to content

Instantly share code, notes, and snippets.

@adamesque
Created February 16, 2011 23:38

Revisions

  1. adamesque revised this gist Mar 24, 2011. 1 changed file with 14 additions and 7 deletions.
    21 changes: 14 additions & 7 deletions preloader.js
    Original file line number Diff line number Diff line change
    @@ -16,18 +16,25 @@ function preloadImages (srcs) {
    img,
    l,
    p;
    if (!$.isArray(srcs)) {

    if (!$.isArray(srcs)) {
    srcs = [srcs];
    }
    l = srcs.length;
    for (var i = 0; i < l; i++) {

    l = srcs.length;

    for (var i = 0; i < l; i++) {
    p = $.Deferred();
    img = $("<img />");
    img.load(p.resolve);

    img.load(p.resolve);
    img.error(p.resolve);
    promises.push(p);

    promises.push(p);

    img.get(0).src = srcs[i];
    }
    $.whenArray(promises).done(dfd.resolve);
    return dfd.promise();

    $.whenArray(promises).done(dfd.resolve);
    return dfd.promise();
    }
  2. adamesque created this gist Feb 16, 2011.
    33 changes: 33 additions & 0 deletions preloader.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    /**
    * 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();
    }