modernizr可以异步加载脚本但是按顺序执行它们吗?

Rob*_*ert 7 modernizr

我正在尝试使用Modernizer.load.

我有这个:

Modernizr.load([
      {
         load  : ['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js']
      }
      ]);
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,我可以使用这样的代码异步加载脚本.但是,我可以按顺序执行它们吗?如果myscript.js需要首先加载jquery对象怎么办?

在modernizr文档的示例中,load([])可以采用'complete'属性,其参数可以是一个可以在其他所有操作完成时加载另一个脚本的函数.但是,如果我在这里使用一个函数来加载我的post-dependancy脚本,那么它将以串行方式加载.文档明确指出,这可能会损害性能.

但是,如果我异步加载所有内容,我对它们的运行顺序一无所知.当然,我需要先依靠我的依赖.

小智 12

如果您使用Modernizr.load,您通过嵌入式列表/哈希包含的所有文件将被异步加载,但它们将按照您放入的顺序执行.

因此,您的示例将异步加载文件,但按以下顺序执行:

1: /js/jquery-1.6.1.js
2: /js/jquery.tools.min.js
3: /js/myscript.js`
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您可以简化您的示例:

Modernizr.load(['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js']);
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅文档中的Modernizr.load()教程,或者查看Yepnopejs.com(目前这是Modernizr.load()的基本内容).