【问题标题】:Can modernizr load scripts asynchronously but execute them in order?modernizr 可以异步加载脚本但按顺序执行它们吗?
【发布时间】:2011-07-13 02:25:44
【问题描述】:

我正在试验 Modernizer.load。

我有这个:

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

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

在modernizr 文档的示例中,load([]) 可以采用“完整”属性,其参数可以是一个函数,可以在其他所有操作完成后加载另一个脚本。但是,如果我在这里使用一个函数来加载我的后依赖脚本,那么它会以串行方式加载。文档特别指出这会损害性能。

但是,如果我异步加载所有内容,我不知道它们的运行顺序。当然,我需要先运行我的依赖项。

【问题讨论】:

    标签: modernizr


    【解决方案1】:

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

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

    1: /js/jquery-1.6.1.js
    2: /js/jquery.tools.min.js
    3: /js/myscript.js`
    

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

    Modernizr.load(['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js']);
    

    有关更多详细信息,请参阅文档中的 Modernizr.load() tutorial,或查看 Yepnopejs.com(此时 Modernizr.load() 基本上就是这样)。

    【讨论】:

      猜你喜欢
      • 2017-07-30
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多