5

私のWebアプリケーションには、急速に起動される一連のajax呼び出しがあります。サーバーでは、これらはクライアントから送信されるのと同じ順序で処理される必要があります。

私はasync: falseこれを行うためにjQueryの構成を使用しています。ただし、これによりGUIが非常に遅くなり、呼び出しの終了がブロックされます。async: trueGUIは応答性がありますが、要求は常に順番に処理されるとは限りません。

ajaxリクエストをキューに入れるための代替の非ブロッキング方法はありますか?そのため、次のリクエストは前のリクエストが終了した後にのみ送信されますか?

注:処理するリクエストの「リスト」がありません。リクエストはオンザフライで生成されるため、リクエストが生成されたときに、ある種のFIFOキューにそれらを詰め込み、何らかのプロセスでキューを消費できるようにする必要があります。

4

1 に答える 1

7

jQuery promisesで簡単に実行できます。

function firstAjax() {
    return $.ajax({...});
}

function secondAjax() {
    return $.ajax({...});
}

firstAjax().pipe(secondAjax).pipe(...).done(function() {
    alert('all requests have successfully finished');
});

また

$.when(firstAjax()).pipe(secondAjax).pipe(...).done(function() {
    alert('all requests have successfully finished');
});

http://jsfiddle.net/zerkms/WQcVD/1/

于 2012-07-24T21:22:40.107 に答える