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