2
나는 지연 스크립트를 구현하는 작은 스크립트로 작업 중이며 Javascript를 기대하는 것처럼 동작하지 않는 코드를 실행합니다.jQuery deferred weirdness
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
});
합니다. 이 함수는 첫 번째 인수가 모델이거나 정의되지 않았 으면합니다.
그렇다면'model'을'dfd.resolve'의 문맥으로 묶는다면 여전히 작동하지 않아야합니까? 이렇게 :'model.always (dfd.resolve.bind (model));'. – kalisjoshua
두 번째 코드 스 니펫에서 첫 번째 스 니핏과 동일한 결과를 얻으려면'model'이 아니라'dfd'를 찾아야합니다 :'$ .get ("filename.json"). always (dfd .resolve.bind (dfd));'그러나 이것이 왜 발생했는지를 명확히하는 첫 번째 코드 스 니펫보다 왜 더 좋은지 모르겠습니다. – jfriend00
동의 함. 나는 그런 식으로해야한다는 철학적 인 제안을하지 않았습니다. 도움을 주셔서 감사합니다. 나는 오늘 저녁이 너무 게으르다가 왜 그렇게 일하는 것인지 깊이 생각하지 못했습니다. – kalisjoshua