Javascript 异步脚本加载和超出加载时间

Javascript 异步脚本加载和超出加载时间,javascript,performance,Javascript,Performance,我知道延迟和异步,但对于UX异步加载是否完全异步,我仍然有一些疑问 我拥有的所有JS都通过管道传输到application.JS中,并添加到标记的底部 现在,那里的一些代码以异步方式添加了其他脚本(即用于分析),如下所示: script = document.createElement('script') script.type = 'text/javascript' script.src = 'http....js' document.body.appendChild(script) 一切

我知道延迟和异步,但对于UX异步加载是否完全异步,我仍然有一些疑问

我拥有的所有JS都通过管道传输到application.JS中,并添加到标记的底部

现在,那里的一些代码以异步方式添加了其他脚本(即用于分析),如下所示:

script = document.createElement('script')
script.type = 'text/javascript'
script.src = 'http....js'
document.body.appendChild(script) 
一切都好。。。JS不阻止渲染,加载后执行,等等,但是有一个问题!如果异步加载的脚本被加载15秒,比如我们刚刚添加的一个跟踪工具,会发生什么?
我可以注意到页面并没有无响应,DOM就绪当然会被触发,但是在
.appendChild(script)
之后,application.js中可能仍在加载的图像或其他Javascript会发生什么情况

appendChild只向文档体添加脚本元素

只有将脚本元素添加到正文中后,才能开始下载脚本元素。 这不会阻止appendChild之后javascript的执行


Nicholas C.Zakas写了一篇很好的文章解释了它是如何工作的

hi Marco,关于影响JS其余部分的部分现在已经很清楚了,因为JS执行是单线程的,新加载的脚本最后执行,但是如果将15秒的加载添加到要加载的其余资源中,那么其他资源的加载情况如何呢?假设您有很多异步启动的ajax调用、加载的图像等,现在您有15秒的时间加载JS添加到等式中:)?@Madhu的感谢评论–JavaScript是单线程的。。。我们谈论的不是JavaScript的执行,而是JavaScript的下载。。。当创建动态脚本标记时,代码被交给JavaScript引擎执行,但是队列不会像静态地将脚本标记嵌入页面中那样阻塞页面。