0

Najaxリクエストを行う必要があります。$ .ajax呼び出しごとに遅延が返されますが、すぐにajaxリクエストも実行されます。私がやりたいのは、N個のリクエストすべてに対してDeferredsを取得することですが、それらを徐々に実行するだけです(たとえば、setIntervalループを介して)。これを行うことは可能ですか?

4

1 に答える 1

1

ブラウザー自体が、1 つのサーバーに対して行われる並列 ajax 要求の数を制限します (たとえば、同時に 4 つまたは 8 つ)。

制限が十分でない場合は、キューを作成していくつかのクエリをスケジュールできます。

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

次に、たとえば 2 つのクエリを実行し、1 つが終了するたびに、キューから別のクエリを取得して実行します。

function runNext() {
    var fun = queue.shift();
    if (fun) {
        fun().always(runNext);
    }
}
for (var i = 0; i < 2; ++i) {
    runNext();
}
于 2012-07-05T17:14:00.123 に答える