jQuery.Deferred test6

by Manoj kumar Lakshman

HTML

<ul></ul>

CSS

ul {
   list-style-type: disc;
   margin: 0 0 0 2em;
}

li {
   margin: 0 0 .5em;
}

JavaScript

/* utils */
var $ul = $('ul');

function msg(text) {
   $ul.append('<li>' + text + '</li>');
}

/* functions */
function asyncThing1() {
   var dfd = $.Deferred();
   setTimeout(function() {
      msg('asyncThing1 seems to be done...');
      dfd.resolve('banana');
   }, 1000);
   return dfd.promise();
}

function asyncThing2() {
   var dfd = $.Deferred();
   setTimeout(function() {
      msg('asyncThing2 seems to be done...');
      dfd.resolve('apple');
   }, 500);
   return dfd.promise();
}

function asyncThing3() {
   var dfd = $.Deferred();
   setTimeout(function() {
      msg('asyncThing3 seems to be done...');
      dfd.resolve('orange');
   }, 1500);
   return dfd.promise();
}

/* do it */
$.when(asyncThing1(), asyncThing2(), asyncThing3()).done(function(res1, res2, res3) {
   msg('all done!');
   msg(res1 + ', ' + res2 + ', ' + res3);
});