我需要按特定顺序加载几个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或打字稿给出示例。

最佳答案

是!有。使用Promisesasync/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'))

07-27 17:50