Javascript 多次调用getScript仍然是一个同步操作吗?

Javascript 多次调用getScript仍然是一个同步操作吗?,javascript,asynchronous,getscript,Javascript,Asynchronous,Getscript,我正在加载javascript依赖项,并试图回答一个关于getScript如何工作的问题 我已经构建了加载代码,它将使用getScript自动加载脚本,基本上是通过在一个文件路径数组中循环并在每个文件路径上调用getScript 由于getScript是异步运行的,所以我不希望保证哪个文件会首先完成加载,并且可能会在主线程中开始执行 但是,如果我多次调用getScript,调用会在内部排队,这样,在较早的文件完成之前,后面的文件不会开始加载。也就是说,我的主函数当然与getScript异步运行,

我正在加载javascript依赖项,并试图回答一个关于getScript如何工作的问题

我已经构建了加载代码,它将使用getScript自动加载脚本,基本上是通过在一个文件路径数组中循环并在每个文件路径上调用getScript

由于getScript是异步运行的,所以我不希望保证哪个文件会首先完成加载,并且可能会在主线程中开始执行

但是,如果我多次调用getScript,调用会在内部排队,这样,在较早的文件完成之前,后面的文件不会开始加载。也就是说,我的主函数当然与getScript异步运行,但即使我首先加载一个非常大的文件(最后加载一个小文件),大文件始终首先执行

考虑到执行顺序永远不会改变(即使我先加载一个非常大的文件,然后再加载一个较小的文件),我只能假设当getScript与主执行线程异步执行时,它不会与自身异步执行


我希望这有足够的道理,有人能为我澄清这一点……

不,没有排队(或者至少没有保证)。您的浏览器可能会在内部对请求进行排队,但其他浏览器可能不会-执行顺序不可预测。不要依赖此行为。这取决于如何以及何时添加外部脚本。如果在加载过程中通过document.write()添加,则可以根据顺序来确定。如果使用appendChild(),浏览器和ISP可能会导致重新订购。儿童更常见。如果您的工具在控制台的“网络”选项卡上留下阶梯模式,您可以做得更好。