Using Kriskoval‘s q version of promise I was in trouble when I required promises for a browser application based on jQuery (+more). After a while I found it exists promise in jQuery too, and is not so different in use. (ok, Kriskoval would arguments on this, and of course he is right, but it is not so different from a [coder-]user point of view)
function myRequest() { var dfd = jQuery.Deferred(); //call yourAsync(par, par, dfd); return dfd; }
and then
function yourAsync(par, par, dfd) { ///do it async(...,function(){ // callback function .... // at the end call dfd.resolve(); }); }
and use it as a promise
myRequest().then(mySecondRequest).then(function(){ console.log('all done'); closeThatBlockingWindowNow(); }).fail(function() { closeThatBlockingWindowAnywayNow(); });
It also integrate well with the rest of jQuery async call, such as $.ajax:
var req = $.ajax({url:. .., ...}); $.when(req).then(function() { .... });
the $.when and deferred object are well documented in jQuery site with examples too
That’s all folks!
Photo credits: Christian Ditaputratama original image: link