2012-11-06 6 views
0

요청을 보내려는 URL 목록이 있습니다. 요청을 처리 한 URL을 기반으로 페이지의 다른 부분을 업데이트하는 경우를 제외하고 응답 처리는 동일하므로 각 요청에 대해 동일한 콜백을 사용하려고합니다.여러 jquery ajax가 동일한 콜백을 요청합니다.

제 문제는 콜백이 첫 번째 요청에 대해 호출 된 다음 첫 번째 요청 처리가 완료되기 전에 두 번째 요청에 대해 다시 호출된다는 것입니다. 그것은 다소 기대되지만, 두 번째로 끝날 때 첫 번째 요청을 처리하는 데 되돌아 갈 것이라고 생각했을 것입니다. 이것은 async가 false로 설정된 경우에도 발생합니다. 콜백이 호출 될 때 동기 부분이 중지됩니다.

내가 찾은 유일한 해결책은 콜백에서 두 번째 요청을 발행하는 것입니다. 더 좋은 방법이 있습니까?

는 여기에 문제의 코드입니다 :

function doStuff() { 
    // populate a var urls array with data from user input 
    var urls = new Array(); 
    // ... code to populate urls ... 

    // loop through urls and send requests 
    for (var i = 0; i < urls.length; i++) { 
     $.ajax({url: urls[i], 
       success: handleResponse, 
       dataType:'html'}); 
    } 
} 

function handleResponse(data) { 
    url = this.url; 
    // process based on url 
} 

답변

0

jQuery Deferred 유용 귀하의 경우 아마도

+0

에서,하지만 난 미리 URL 수를 알고있는 경우가 더 유용 할 것 같습니다. 필자의 경우에는 (나는 이것을 반영하기 위해 샘플 코드를 편집했다.) 어쩌면 나는 Deferred를 여전히 사용할 수 있습니다 - 아직 확실하지 않습니다. – MikeL

관련 문제