动态顺序加载javascript

动态顺序加载javascript,javascript,jquery,asynchronous,onload,Javascript,Jquery,Asynchronous,Onload,我有5个不同的js文件,我想在ajax调用成功响应状态后执行它们 我目前正在做的是: function require(list, fn) { for (var i = 0; i < list.length; i++) { var headID = document.getElementsByTagName("head")[0]; var newScript = document.createElement('script'); ne

我有5个不同的js文件,我想在ajax调用成功响应状态后执行它们

我目前正在做的是:

function require(list, fn)
{
    for (var i = 0; i < list.length; i++) {
        var headID = document.getElementsByTagName("head")[0];
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.src = list[i];
        if (newScript.readyState){  //IE
        newScript.onreadystatechange = function(){
            if (newScript.readyState == "loaded" ||
                newScript.readyState == "complete"){
                newScript.onreadystatechange = null;
                callback();
            }
          };
        } else {  //Others
          newScript.onload = function(){
            callback();
        };
      }

      newScript.src = url;
      headID.appendChild(newScript);
    }
}
但是没有效果。

这应该可以:

const require = ([head, ...tail]) => {
  const loadScript = link => new Promise((fulfill, reject) => {
    const script = document.createElement('script');
    script.addEventListener('load', fulfill);
    script.addEventListener('error', reject);
    script.src = link;
    document.head.appendChild(script);
  });
  loadScript(head).then(() => {
    if (tail.length > 0) {
      require(tail);
    }
  });
};
我希望代码是自我解释的

还要确保
dca
变量为。

这应该可以:

const require = ([head, ...tail]) => {
  const loadScript = link => new Promise((fulfill, reject) => {
    const script = document.createElement('script');
    script.addEventListener('load', fulfill);
    script.addEventListener('error', reject);
    script.src = link;
    document.head.appendChild(script);
  });
  loadScript(head).then(() => {
    if (tail.length > 0) {
      require(tail);
    }
  });
};
我希望代码是自我解释的


还要确保
dca
变量为。

您可以在var dca中定义它;如果您需要它们全部加载first use promises或像require.js这样的加载程序,“在file2.js上声明变量dca”是
dca
全局变量吗?您可以在var dca中定义它;如果您需要将它们全部加载到first use promises或require.js之类的加载程序中,“在file2.js上声明一个变量dca”是
dca
全局变量吗?