加载多个脚本文件并按顺序/同步解析它们

时间:2016-05-16 05:31:20

标签: javascript

我遇到了类似的问题,但我认为我对此有一个小变化:我有一个我希望能够加载的文件列表,但有些依赖于彼此所以他们加载 - 或实际解析和执行 - 的顺序很重要。

我现在拥有的简化代码:

function loadscripts() {
    for (var i=0; i<list.length; i++) {
        var scriptElem = document.createElement("script");
        scriptElem.src = list[i];
        $("body").append(scriptElem);
}

var list ["script1.js","script2.js"];

loadscripts();

我认为,因为我基本上是在向DOM中添加标签,所以浏览器会按顺序解析它们,就像它们在“静态”中那样。 html文件。但事实证明它并没有。

例如,我加载hammerjs及其jquery hammer插件。这些是单独的文件,所以我按顺序将它们添加到dom中,但是当在hammerjs之前解析时,jquery hammer插件有时会抛出错误(Hammer未定义)。

所以这样的事情是不安全的:

// script1.js
var someObject = {
    value1:1, value2:2
}

// script2.js
console.log(someObject.value1);

这会(有时!)抛出错误,例如&#34;无法访问&#39; value1&#39;未定义&#34;。

我可以像在SO上指出的类似问题及其答案一样,使用script.onload但由于我想要加载多个文件,需要跟踪加载哪个文件,再次调用loadScript函数并添加下一个,依此类推。那会有点混乱。

有没有人知道一个尽可能干净的解决方案?

相关问题:

0 个答案:

没有答案