异步下载几个js脚本,然后按顺序执行它们

时间:2014-05-08 21:33:01

标签: javascript jquery asynchronous ember.js

我正在使用Ember.js构建一个应用程序。网站的管理部分需要使用一些不同的JavaScript库。

我只想在访问网站的管理路线时下载这些库。

我想我可以做类似下面的StackOverflow答案:

https://stackoverflow.com/a/11803418/2014469

$.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

});

但我对这些文件的执行顺序感到紧张。

假设myscript2.js取决于myscript1.js中的某些功能。

myscript1.js之前会myscript2.js加载 (!)并执行(!) 吗?

如果不是,我如何异步下载所有文件,然后按顺序执行?我想只是链接.then()

$.getScript( "/mypath/myscript1.js" )
.then(function{$.getScript( "/mypath/myscript2.js" )})
.then(function{$.getScript( "/mypath/myscript3.js" )})

但是这会等到下载并执行之后才会开始下载下一个 - 我想同时下载所有内容,然后按顺序执行它们。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要一个管理脚本之间依赖关系的javascript加载器。

如果requirejs太大而无法满足您的需求,并且您不打算自己编写,请查看这些较小的库: http://microjs.com/#loader