答案是
您可以使用 promisegetScript()并等待所有脚本加载完毕,例如:
$.when(
    $.getScript( "/mypath/myscript1.js" ),
    $.getScript( "/mypath/myscript2.js" ),
    $.getScript( "/mypath/myscript3.js" ),
    $.Deferred(function( deferred ){
        $( deferred.resolve );
    })
).done(function(){
    
    //place your code here, the scripts are all loaded
    
});
小提琴
ANOTHER FIDDLE
在上面的代码中,添加一个 Deferred 并在里面解析它$()就像在 jQuery 调用中放置任何其他函数一样$(func),就像,它与
$(function() { func(); });
即它等待 DOM 准备好,因此在上面的示例中,$.when等待所有脚本加载并等待DOM 准备好,因为$.Deferred调用在 DOM 准备好回调中解析。
对于更通用的用途,一个方便的功能
可以像这样创建一个接受任何脚本数组的实用程序函数:
$.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);
}
可以这样使用
var script_arr = [
    'myscript1.js', 
    'myscript2.js', 
    'myscript3.js'
];
$.getMultiScripts(script_arr, '/mypath/').done(function() {
    // all scripts loaded
});
路径将被添加到所有脚本的前面,并且也是可选的,这意味着如果数组包含完整的 URL,也可以这样做,并且一起省略路径
$.getMultiScripts(script_arr).done(function() { ...
参数、错误等。
顺便说done一句,请注意回调将包含许多与传入的脚本匹配的参数,每个参数代表一个包含响应的数组
$.getMultiScripts(script_arr).done(function(response1, response2, response3) { ...
其中每个数组将包含类似[content_of_file_loaded, status, xhr_object]. 我们通常不需要访问这些参数,因为无论如何脚本都会自动加载,而且大多数时候done回调是我们真正想要知道所有脚本都已加载的全部内容,我只是为了完整性而添加它,以及在极少数情况下需要访问加载文件中的实际文本,或者需要访问每个 XHR 对象或类似内容时。
此外,如果任何脚本加载失败,将调用失败处理程序,并且不会加载后续脚本
$.getMultiScripts(script_arr).done(function() {
     // all done
}).fail(function(error) {
     // one or more scripts failed to load
}).always(function() {
     // always called, both on success and error
});