以下函数中的哪些部分使其成为异步的?
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 顶部添加图像/文本以使其成为视频的一部分?
UITableViewCell 中的 UITextField - 当它出现在屏幕上时,以编程方式使其成为 firstResponder?