
巧妙掌控异步脚本加载顺序:确保第二个脚本在第一个脚本异步执行完毕后加载
网页开发中,JavaScript脚本的加载顺序至关重要,尤其当脚本之间存在依赖关系时。本文将解决一个常见问题:如何确保在页面中引入两个标签时,第二个脚本的加载和执行发生在第一个脚本的异步操作完成后。
问题描述:假设第一个脚本(文件1)使用async/await和setTimeout模拟异步操作,打印“1111 - index1”;第二个脚本(文件2)为立即执行函数,打印“2222 - index2”。直接按顺序引入这两个脚本,由于异步操作的延迟性,“1111 - index1”并不总是先于“2222 - index2”打印。
简单的顺序调整无法解决此问题,因为浏览器并行加载和执行脚本。
解决方案:
-
动态插入第二个脚本: 在第一个脚本的异步操作完成后,使用JavaScript动态创建
元素,设置其src属性为第二个脚本的路径,再将其添加到文档中(document.body.appendChild)。这种方法确保第二个脚本仅在第一个脚本的异步操作结束后才开始加载和执行。 -
使用
import()动态加载: 利用ES模块的import()函数异步加载模块。这需要第二个脚本以ES模块形式编写,并可被import()导入。这种方法更现代化,也更符合最佳实践。
两种方法都能有效控制脚本加载顺序,选择哪种方法取决于项目需求和代码风格。










