2012-07-05 2 views
0

N 아약스 요청을해야합니다. 각 $ .ajax 호출은 Deferred를 반환하지만 즉시 ajax 요청을 수행합니다. 내가 원하는 것은 모든 N 요청에 대해 Deferreds를 얻는 것 뿐이지 만 점진적으로 수행해야합니다 (setInterval 루프를 통해 말하십시오). 이것을 할 수 있습니까?

+0

은 확실히 가능 – Esailija

답변

1

브라우저는 그 자체로 단일 서버 (예 : 동시에 4 개 또는 8 개)에 대한 병렬 ajax 요청의 수를 제한합니다.

가 충분하지 않아 한계, 당신은 큐를 확인하고 예약 할 수 있다면 일부 쿼리 :

var queue = []; 
queue.push(function() { 
    return $.ajax(...); 
}); 
queue.push(function() { 
    return $.ajax(...); 
}); 
... 

그리고 예를 들어, 실행 쿼리, 때마다 하나의 마감 2, 큐에서 기타를 가지고 실행 :

function runNext() { 
    var fun = queue.shift(); 
    if (fun) { 
     fun().always(runNext); 
    } 
} 
for (var i = 0; i < 2; ++i) { 
    runNext(); 
} 
+0

덕분, 난 (runNext에 통화 사이의 제한 시간)이 같은 일을 결국. 방금 Deferred가 추가 코드없이 이것을 지원할 수있는 방법이있을 거라고 생각했습니다. –