我需要按特定顺序加载几个js脚本。实际上,我在打字稿中进行操作,我不能使用jQuery,只能使用纯ts / js。我现在所拥有的是:
var script1 = document.createElement('script');
script1.type = 'text/javascript';
script1.src = 'script1.js';
document.head.appendChild(script1);
script1.onload = function () {
var script2 = document.createElement('script');
script2.type = 'text/javascript';
script2.src = 'script2.js';
document.head.appendChild(script2);
script2.onload = function () {
etc...
}
}
它可行,但是我相信还有一些更优雅的方法可以做到这一点?请使用普通javascript或打字稿给出示例。
最佳答案
是!有。使用Promises
和async/await
function loadScript(url) {
return new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
document.head.appendChild(script)
script.onload = () => resolve()
})
}
async function loadScripts() {
await loadScript('script1.js')
await loadScript('script2.js')
// ..
}
loadScripts().then(_ => console.log('All scripts loaded in specified order'))