2 ~ 5 個の適度なサイズのデータ ファイルが読み込まれた後、Web ページに関数を読み込む必要があることがよくあります。最大 5 つのファイルに分割された最大 3MB のデータを考えてみましょう。
次のように、すべての AJAX 呼び出しを同時に行い、すべてが読み込まれた後に initialize() 関数を読み込むことで、読み込み時間を最適化しようとしています。
var data1, data2;
$(document).ajaxStop(function() {
$(this).unbind("ajaxStop"); //prevent running again when other calls finish
initialize();
});
$.ajax({
url: url_to_data_1,
success: function (d) {
data1 = d;
}
});
$.ajax({
url: url_to_data_2,
success: function (d) {
data2 = d;
}
});
function initialize() { /* do something with data1 and data2 */ }
しかし、毎回これを貼り付けるのにうんざりしているので、次のような関数が必要です:
function multi_Ajax(urls, callback) {
var data = {};
//call init() after both the list of prayers and the word concordance index load
$(document).ajaxStop(function() {
$(this).unbind("ajaxStop"); //prevent running again when other calls finish
callback(data);
});
for (var c = 0; c < urls.length; c += 1) {
//data files
$.ajax({
url: urls[c],
dataType: "json",
success: function (d) {
data[urls[c]] = d; console.log("Loaded " + urls[c]);
}
});
}
}
もちろん、ajaxStop がキャッチする ajax 呼び出しが存在しないため、これは機能しません。しかし、私は ajaxStop がどのようにうまく機能するかを理解していません。ありがとうございました!