我可以使用jQuery检测何时完成延迟的AJAX请求数组,并且可以检测页面何时使用jQuery加载。
但我似乎无法同时发现两者。
这就是我所拥有的:
$(function () {
var getscriptlist = ['js/libs/handlebars.js', 'js/libs/ember.js', 'js/libs/prefixfree.js'];
var deferreds = [];
for (var i = 0; i < getscriptlist.length; i++) {
deferreds.push($.getScript(getscriptlist[i]));
}
$.when.apply($, deferreds).then(function () {
});
});
但是我想在页面开始加载之前运行AJAX请求,然后我想在文档加载时触发一些东西。
我目前的问题是页面加载,而AJAX将花费太长时间,因为它只在页面加载后才开始运行。如果我以相反的方式切换它(以便触发请求,当它们完成并且页面已加载),那么AJAX请求可能需要太长时间,并且会延迟页面上脚本的执行,这会绑定在页面完成加载时运行的$(function
内部。
有任何帮助吗?感谢。
答案 0 :(得分:1)
我想有很多方法可以做到这一点。这是一个:
$(function () {
var getscriptlist = ['js/libs/handlebars.js', 'js/libs/ember.js', 'js/libs/prefixfree.js'];
var deferreds = [ $.Deferred() ];//<<<<<< start the array with a special Deferred
$(window).on('load', deferreds[0].resolve);//<<<<<< resolve the special Deferred when the page has loaded
for (var i = 0; i < getscriptlist.length; i++) {
deferreds.push($.getScript(getscriptlist[i]));
}
$.when.apply($, deferreds).then(function () {
//code here will run when all Deferreds/promises in the array become resolved.
});
});