情景是我有很多js文件。根据不同的平台调用不同的文件。 所以我有一个问题,因为我想异步加载文件。但是这些文件的执行应该同步完成。目前我正在进行此函数调用
function loadScriptJs(src) {
Console.log(' Call to file '+src);
var file = document.createElement('script'),
head = document.getElementsByTagName('head')[0];
file.type = 'text/javascript';
file.setAttribute("defer","defer");
file.setAttribute("src",src);
head.appendChild(file);
file.onload = function() {
console.log(src + " is loaded.");
};
}
现在我有一个数组,其中包含一个被调用的js文件列表。我遍历数组并为每个src调用此函数。 我在每个js文件中都使用了document.ready函数。在这里,我检查了文件的依赖关系,并对序列进行了优化。即依赖文件稍后加载(稍后在数组中加载),而类似于Parent的文件会更早出现。
示例: - 如果我有文件A1,B2,C3,D4,E5 ......就像明智一样。我的数组是[' js / A1.js',' js / B2.js',' js / C3.js' ...]。当我通过循环运行它。 我得到了调用文件[文件名]'是与数组中相同的序列,但加载了“[filename]的控制台'没有达到预期的顺序。
是的我无法通过互联网控制加载。但我希望执行是同步的。即在最后一个文件完成加载时开始执行所有文件。
任何人都可以向我提供任何建议,建议或想法。
答案 0 :(得分:1)
动态插入的脚本可能不符合403
属性。 defer
个代码具有script
属性。默认情况下,这是真的。明确地将其设置为false。
async
或以纯HTML格式
file.setAttribute("async", "false");
您可能还需要删除每个脚本中的<script type="text/javascript" async=false src="A1.js"></script>
方法并在顶层启动脚本的逻辑,将每个JS脚本附加到document.ready
标记的底部而不是标题。如果多个脚本在它被触发之前注册了就绪事件,那么你不知道它们将被调用的顺序。