以下函数中的哪些部分使其成为异步的?

问题描述 投票:0回答:1

我正在学习javaScript,刚刚接触到关于承诺,异步等待,取等话题,在网上看了一个教程,它把下面的代码描述为 异步

function loadScript(src) {
let script = document.createElement('script');
script.src = src;
document.head.append(script);
}

我了解到javascript把所有的异步工作都交给了浏览器,比如http请求,因为它们需要时间,可能会阻塞javascript的流程。

请指点一下,上面的代码是如何异步的,哪一部分是异步的?是不是因为我们使用的是文档对象,文档对象中的所有方法都是异步的,由浏览器处理,还是有其他原因?

这里是教程的链接,如果我理解错了什么,对不起。https:/javascript.infocallbacks)。

javascript asynchronous dom
1个回答
1
投票

它是异步的,因为你是从服务器上获取脚本代码,使用的是 src URL。那就要发送网络请求,在服务器响应之前,代码不会插入到DOM中并执行。

修改DOM本身是同步的,但一些元素会导致网络请求的发送和等待。例子有 <script>, <img><iframe>.


1
投票

脚本标签本身需要加载url,所以这部分是异步的。脚本加载是由浏览器处理的。


0
投票

如果你指的是动态创建的 script 元素的行为就像它们有自己的 async 属性集,这就是所谓的 在规格上:

脚本元素有一个标志,表示该元素是否为 "非阻塞"。起初,脚本元素必须设置这个标志,但HTML解析器和XML解析器在插入脚本元素时不会设置这个标志。HTML解析器和XML解析器在插入脚本元素时不会设置这个标志。此外,每当一个被设置了 "非阻塞 "标志的脚本元素被添加了一个async内容属性,该元素的 "非阻塞 "标志必须被取消设置。

....但即使脚本元素没有被设置为 async 设置,源码的下载仍然会异步进行。async 只是说 "在等待这个下载的过程中,不要阻止进一步的HTML解析或JavaScript执行"。注入脚本的代码仍然会完成运行,但页面上任何后续的脚本元素都会等待阻止脚本下载。

© www.soinside.com 2019 - 2024. All rights reserved.