使用Jquery和文档后回调来异步获取多个脚本的正确方法

Die*_*ego 7 javascript jquery asynchronous

我正计划在页面加载时异步从我的服务器获取几个JS文件.我知道Jquery函数"getScript",但这只能得到1个脚本.有什么方法可以指定从服务器获取一批脚本时要执行的回调吗?

我想过做这样的事情:

$.getScript(script1, function() {
$.getScript(script2, function() {
$.getScript(script3, function() {
...
...
});});....});
Run Code Online (Sandbox Code Playgroud)

但这会按顺序加载脚本,我希望这些请求可以并行完成.

作为一个更普遍的问题取代了这个,加载N个资源(CSS,图像,脚本等)的最佳方法是异步指定在加载所有资源时要执行的单个回调?

更新:除此之外,我需要在文档准备好后执行回调(由$(document).ready事件发出信号).有没有实现这个目标?

SLa*_*aks 8

你需要getScript连续调用3次,传递一个回调,增加一个计数器,如果计数器是,则调用真正的回调3.

您可以创建一个简单的包装函数来执行此操作:

function getScripts(names, callback) {
    var received = 0;
    var realCallback = function() { 
        received++;
        if (received === names.length)
            $(callback);
    };

    for (var i = 0; i < names.length; i++)
        $.getScript(names[i], realCallback);
}
Run Code Online (Sandbox Code Playgroud)

(编辑在文档准备好时调用回调)

你可以这样称呼它:

getScripts([ "script1", "script2", "script3" ], function() { ... });
Run Code Online (Sandbox Code Playgroud)