私は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
});
これが機能しない理由はわかりません。関数は、最初の引数がモデルまたは未定義であることを期待しています。