私はdeferredsを実装する小さなスクリプトに取り組んでおり、Javascriptが期待するように動作していないこの小さなコードに出くわしました。
var dfd = $.Deferred()
  , view  = $.get("filename.tmpl");
$.get("filename.json")
  .always(function (model) {
    dfd.resolve(model);
  });
$.when(view, dfd)
  .done(function (view, model) {
    // do stuff with view - even if there is no model
  });
これは正常に機能しますが、これにリファクタリングすると機能しなくなります。
var dfd = $.Deferred()
  , view  = $.get("filename.tmpl");
$.get("filename.json").always(dfd.resolve);
$.when(view, dfd)
  .done(function (view, model) {
    // do stuff with view - even if there is no model
  });
これが機能しない理由はわかりません。関数は、最初の引数がモデルまたは未定義であることを期待しています。