when, done, promise, JavaScript

when, done が、いまいちよくわからない。これで何とか、期待する動作はしてくれたけど、return d.promise をすると tmp_data に値をいれられなくなるしなぁ。

もっと簡単にならないかな、JavaScript は...。

$.when(
  step1()
).done(function(tmp_data){
  step2();
})

function step1(){
  var d = new $.Deferred;
  $(function(){
    /* DO SOMETHING */
    d.resolve();
  });
  return d.promise();
}


jQuery モダンAjaxな書き方を目指して 〜Deferredを使ったAJAX〜 - Hack Your Design!
jQuery リファレンス:deferred.resolve