我经常需要在加载两到五个适度大小的数据文件之后在网页上加载函数。假设最多5MB文件分割为3MB的数据。用于N ajax调用的Javascript函数
我试图通过使所有的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]);
}
});
}
}
这是不行的,当然,因为不存在Ajax调用的ajaxStop赶上。但我不明白ajaxStop的工作方式是否足够好以进一步获得更多。谢谢!
我想你正在寻找'$ .when()'。 – Barmar 2013-02-14 16:34:24
你是什么意思“ajax调用不存在为ajaxStop捕捉?” – 2013-02-14 16:36:43
谢谢 - 可以当()采取动态输入?说,一个循环填充的东西? EP - 我的意思是如果ajax调用是在循环中创建的,ajaxStop可以找到它们吗? – 2013-02-14 16:40:19