Edit in JSFiddle

$(function(){
  // setTimeout with Deferred
  var $timeout = function(sec, message){
    var defer = new $.Deferred();
    setTimeout(function(){
      console.log(message);
      defer.resolve();
    }, sec * 1000);
    return defer.promise();
  }

  $timeout(2, 'foo')
  .done(function(){
      $timeout(1, 'bar');
  });
})