手机版

简单谈谈JavaScript的同步和异步

时间:2021-09-19 来源:互联网 编辑:宝哥软件园 浏览:

1.用手画一幅画。

2.JavaScript为什么是单线程的(这里引用阮一峰的话)。

JavaScript是一个单线程,这与其用途有关。

作为一种浏览器脚本语言,JavaScript主要用于与用户交互和操作DOM。

这就决定了它只能是单线程,否则会带来复杂的同步问题。

例如,假设JavaScript同时有两个线程,一个线程向DOM节点添加内容,另一个线程删除节点。浏览器应该以哪个线程为标准?

因此,为了避免复杂性,JavaScript从诞生之日起就一直是单线程的,这已经成为这种语言的核心特性,未来也不会改变。

为了利用多核CPU的计算能力,HTML5提出了Web Worker标准,允许JavaScript脚本创建多个线程,但子线程完全由主线程控制,无法操作DOM。

因此,这个新标准并没有改变JavaScript单线程的本质。

门户:详细讲解JavaScript运行机制的事件循环。

3.3的异步在哪里?JavaScript?

如开头图所示,我个人认为左边的主线程是同步的,左边的事件队列(消息队列)是异步的。

当然,JavaScript中有许多异步:

Ajax(XMLHttpRequest)图像标记、脚本标记、iframe(原理相似)settimeout/setinterval css3 transition/animation post message web workers web sockets等等…

版权声明:简单谈谈JavaScript的同步和异步是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。