順次実行する必要がある一連の ajax 呼び出しがありますが、同期は必要ありません。これを行う最善の方法は何ですか?
できることはわかっていますが$.when().then()
、それは2つのajax呼び出しでしか機能しませんか? 理想的には、私は次のようなことをしたいと思っています:
var caller;
for (var i = 0; i < argObjects.length; i++) {
if (typeof caller === 'undefined') {
caller = $.when($.ajax(... data: argObjects[i]...));
}
else {
caller.then($.ajax(... data: argObjects[i]...));
}
}
つまり、一連then
の を追加するだけで、すべてを連鎖させることができます。しかし、これは不可能です。jQueryでそれを行う別の方法はありますか?
これらの呼び出しは同時に実行できないことに注意してください。set としてループを実行できますが、async: false
処理中にユーザーから制御が奪われてしまい、良くありません。
別の考え方として、すべてを 1 回の呼び出しで送信することもできますが、実行中のタスクの進行状況を監視するにはどうすればよいでしょうか。更新するデータが 10 週間あり、各週が完了するたびに通知を受け取りたいとします。10 回の連続した ajax 呼び出しを送信した場合、それぞれが戻ってきて、完了したことを通知し、何らかの進行状況バーを更新できます。ここが本当の最終目標です。
その間、jQuery の deferred に頭を悩ませようとします。