2014-03-05 4 views
0

약속을 통해 객체를 반환하려고합니다. 다른 함수를 실행하기 전에 하나의 비동기 함수가 완전히 완료되었는지 확인하고 있습니다.Jquery deferred - 이전 함수가 완료되기 전에 함수 호출을 연기하십시오.

$.when(firstFunction()).done(secondFunction()); 

이 무엇인가요?

+1

를 그리고 무엇을 그 비동기 기능이 더 중요한 그들이 반환 할 것을 포함하거나 않습니다 firstFunction는 AJAX 요청을 포함한다면, 말하자면, 그것은 다음과 같을 수 있는가? – adeneo

답변

2

예, 일반 함수가 지연된 객체를 반환하지 않기 때문에 지연 객체를 직접 작성해야합니다.

var dfd = new $.Deferred; 
dfd.done(secondFunction); 
firstFunction(); 

은 ... 후 적절한 시점에서 firstFunction() 해결 dfd (dfd.resolve()를 통해)가 있습니다.

function firstFunction() { 
    $.get('some/file.txt').done(function() { dfd.resolve(); }); 
} 
+0

+1하지만,'firstFunction'가 Deferred를 만들고 돌려 주면 더 직관적 일 것입니다. 그래서'firstFunction(). done (secondFunction) '으로 호출 될 수 있습니다. –

+0

@MartinJespersen - 좋아요. 연쇄 패턴. – Utkanos