아약스 호출에서 지연된 개체를 반환하는 중첩 함수가 여러 개 있습니다. 내 코드는 다음과 같습니다.jQuery 지연된 개체 : .when() s, .then() 및 .done() s와의 예기치 않은 동작 s
function makeCalls() {
var ajaxDfd1 = $.ajax(...);
ajaxDfd1.then(function() {
// want to execute after first call
var ajaxDfd2 = $.ajax(...);
ajaxDfd2.done(function() {
// want to execute after second call
});
return ajaxDfd2;
});
return ajaxDfd1;
}
makeCalls().done(function() {
// stuff here was executed early
});
그러나 내 전화가 의도 한 순서대로 실행되고 있지 않습니다. 안에있는 내용은 makeCalls().done()
전에 호출 된 것 같습니다 ajaxDfd2
실제로 이루어집니다.
. 마지막 하나는 완벽합니다. – Bergi
@Bergi, 왜 당신이 그 이유를 설명 할 수 있을지 확신합니다! –
처음은 지나치게 복잡하기 때문에 -'then' (이미 사용하고있는 것)은 수동으로하는 일을 정확히 수행합니다. 두 번째는 Deferreds를 사용하지 않았기 때문에 요청되지 않은 콜백 (CPS를 대체하기위한 약속)이 있습니다. – Bergi