0
我必須提出N個Ajax請求。每個$ .ajax調用都會返回一個Deferred,但也會立即執行ajax請求。我想要做的是得到所有N個請求的Deferreds,但只讓它們逐漸執行(比如通過setInterval循環)。是否有可能做到這一點?
我必須提出N個Ajax請求。每個$ .ajax調用都會返回一個Deferred,但也會立即執行ajax請求。我想要做的是得到所有N個請求的Deferreds,但只讓它們逐漸執行(比如通過setInterval循環)。是否有可能做到這一點?
瀏覽器本身會限制向單個服務器發出的並行ajax請求數(例如,同時爲4或8)。
如果這還不夠的限制,你可以做一個排隊和安排一些疑問:
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();
}
感謝,我結束了做這樣的事情(電話之間有超時runNext)。我只是覺得可能有一種方法讓Deferred's在沒有額外代碼的情況下支持這一點。 – 2012-07-05 18:56:20
的確可以 – Esailija 2012-07-05 17:09:47