【发布时间】:2016-11-05 02:44:39
【问题描述】:
我正在使用 jQuery getScript 将 X 数量的 js 文件加载到我的页面中。这些 JS 页面中的每一个都有一个从数据库中获取数据的 AJAX 调用。
我在getScript 上使用.done 方法来查看所有文件何时已加载,但我需要等到所有AJAX 调用也已完成。
在做某事之前,如何通过getScript 等待 AJAX 调用在包含的文件中完成?
$.getMultiScripts(moduleIncludes, 'includes/js/modules/').done(function() {
// All of the JS files have been included but we need to wait until those files have finished their AJAX call.
});
// Get array of JS scripts to load
$.getMultiScripts = function(arr, path) {
var _arr = $.map(arr, function(scr) {
return $.getScript((path || "") + scr);
});
_arr.push($.Deferred(function(deferred) {
$(deferred.resolve);
}));
return $.when.apply($, _arr);
}
【问题讨论】:
-
让所有程序在某处写入完成状态。然后,您需要查询“某处”(服务器、本地存储或其他)以检查所有过程是否已完成。
-
@threadp 我将如何等待或检查这样的状态?
-
安装一个
setTimeout处理程序来检查是否完成,如果一切都完成(加载),则执行进一步的代码。 -
@threadp 感谢您的建议。我会牢记这一点,但会继续寻找更稳定的解决方案。
-
如果您知道可以使用计数器的文件数量。
标签: javascript jquery ajax