2014-11-07 6 views
1

일부 $ .post() 및 $().로드 ajax 호출 및 모든 함수가 완료되면 함수를 실행하고 싶습니다.

when(deferred1, deferred2, deferred3).done(function() {}); 

을하지만)이 .load (에서 연기 대상을받을 수 있나요 어떻게 함께 사용할 수있는 전화 : 나는은 $ .post를 알고() 호출은() 호출에서 내가 할 수있는 연기 된 개체를 반환 언제()?

답변

1

load은 약속을 반환하지 않으며, complete 콜백 만 수락 할 수 없습니다. when 호출의 일부로 사용하려면 자신의 약속을 작성하고 complete 콜백 내에서이를 해결하거나 거부해야합니다.

당신은 (정말 만 한 라인 저장) 모두에서 load를 사용하거나 래핑 자신의 함수를 작성하지 것이 더 낫다 : 그것에 대해

function load($el, url) { 
    var dfd = $.Deferred(); 
    $el.load(url, function (responseText, textStatus, jqXHR)) { 
    if (textStatus == 'success') { 
     dfd.resolve(); 
    } else { 
     dfd.reject(); 
    } 
    }) 
    return dfd.promise(); 
} 


$.when($.post(...), load($el, url), $post(...), load($el, url)).done(...) 
+0

감사합니다. .load는 당신에게 한 줄을 저장한다고 말합니다. 나는 당신이 $ .post를 할 수 있고 엘리먼트에 응답을 추가 할 수 있었다고 생각한다. 그게 당신이 생각한거야? – Steve