2013-08-19 3 views
0

루프에 여러 번 비동기 함수를 호출하는 함수가 있습니다.비동기 함수가 완료 될 때 알아주는 방법

function myFunc() { 
    var things = [1, 2, 3, 4, 5]; 

    $.each(things, asyncFunc); 

    alert('Things ' + things.join() + ' have all been processed.'); 
} 

function asyncFunc(key, value) { 
    $.post('api.php', value: thing); 
} 

모든 비동기 호출이 완료된 경우에만 계속하고 싶습니다. 그때 asyncFunc 반환 지연된 개체를 확인하고 $.post.done 방법 .resolve()를 호출 할 수도 있지만

은 내가 어떻게 .each 루프를 차단할 수 있고 asyncFunc가 완료된 경우에만 계속?

asyncFunc에 대한 모든 호출이 완료된 경우에만 다른 방법으로 계속 진행할 수 있습니까?

답변

2
  1. 은 카운터가 카운터가 더 표시된 경우 콜백
  2. 호출 된 횟수 things.length
  3. 카운트를 기반으로 한의 콜백에서
  4. asyncFunc콜백 전달 이동, 콜백
  5. 카운터 인디 이것이 최후임을 나타내는 케이트, 계속되는 호출

콜백

var count = things.length, 
    callback = function() { 
     if (0<--count) return; 
     // do stuff 
    }; 
+0

아, 멋지다. 나는 이미 asyncFunc'에 콜백을 가지고 있으므로 추가 콜백 콜을 현재 콜백의 끝에 추가했습니다. 어쨌든 새로운 사람들이 발견 할 수있는 전체 작업 코드를 보여줄 수 있습니까? – CJxD

관련 문제