1

jQuery 提供了 getScript(file, callback) 函数,它加载一个脚本文件,解释它,然后调用一个 callback() - 函数。

如果在执行回调之前需要加载多个文件,可能会想到这样的解决方案:

function loadOrdered(files, callback) {
   $.getScript(files.shift(), files.length
       ? function(){loadOrdered(files, callback);}
       : callback
   );
}

但是,这会强制以非常特定的顺序加载文件,这意味着浏览器必须等待服务器响应才能加载下一个脚本。这可能会导致不必要的延迟。

如何在不强制浏览器顺序加载脚本的情况下达到与上述代码相同的效果?

4

2 回答 2

3

这是我建议的解决方案:

function loadUnordered(scripts, callback){

var loadCount = scripts.length;

function done(){
    loadCount -=1;
    if (loadCount==0){ 
        callback();
    }
}

for ( var i=0; i<scripts.length; i++){
    $.getScript(scripts[i], done);
}

}

此处发布了类似的解决方案:在所有 ajax .load() 请求完成后执行函数

于 2012-10-25T10:40:48.220 回答
3

您实际上描述了head.js的功能,这似乎是您正在寻找的。

于 2012-10-25T10:44:53.823 回答