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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以下函数中的哪些部分使其成为异步的?相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

答案

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

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

另一答案

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

另一答案

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

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

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

以上是关于以下函数中的哪些部分使其成为异步的?的主要内容,如果未能解决你的问题,请参考以下文章

php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用

如何以正确的方式制作启动画面,即不使其成为应用程序流程的一部分?

斯威夫特:如何在我的 AVPlayerLayer 顶部添加图像/文本以使其成为视频的一部分?

选择月末并使其成为 pyspark 中的字符串

将空白选项添加到选择顶部并使其成为 IE 中的选定选项

UITableViewCell 中的 UITextField - 当它出现在屏幕上时,以编程方式使其成为 firstResponder?