リクエストしたい URL のリストがあります。応答の処理は、要求を行った URL に基づいてページのさまざまな部分を更新することを除いて同じであるため、要求ごとに同じコールバックを使用したいと考えています。
私の問題は、コールバックが最初のリクエストに対して呼び出され、最初のリクエストの処理が完了する前に 2 番目のリクエストに対して再度呼び出されることです。それはある程度予想されますが、2番目のリクエストが終了すると、最初のリクエストの処理に戻ると思っていました。これは、async が false に設定されていても発生します。明らかに、コールバックが呼び出されると同期部分が停止します。
私が見つけた唯一の解決策は、コールバックで 2 番目の要求を発行することです。より良い方法はありますか?
問題のコードは次のとおりです。
function doStuff() {
// populate a var urls array with data from user input
var urls = new Array();
// ... code to populate urls ...
// loop through urls and send requests
for (var i = 0; i < urls.length; i++) {
$.ajax({url: urls[i],
success: handleResponse,
dataType:'html'});
}
}
function handleResponse(data) {
url = this.url;
// process based on url
}