JavaScript 运行机制 Event Loop 学习

本文介绍了JavaScript的单线程特性、任务队列、宏任务与微任务的区别,并通过实例详细解析了Event Loop的工作机制,阐述了一次事件循环的步骤,帮助理解JavaScript异步执行的本质。
摘要由CSDN通过智能技术生成

这个事件机制我看了好多的文章,有不少被指出有理解错误或问题,我一直对这个东西处于迷迷糊糊的状态,今天看到一道题,决定好好研究一下。本文只是我自己的的学习总结,不免有问题,希望看到问题的朋友批评指正。
工具:Loupe我们可以通过使用 Loupe(Loupe是一种可视化工具,可以帮助您了解JavaScript的调用堆栈/事件循环/回调队列如何相互影响)工具来了解上面代码的执行情况。

1. JavaScript是单线程
JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?所以,为了避免复杂性,从一诞生,JavaScript就是单线程,这已经成了这门语言的核心特征,将来也不会改变。
2.任务队列
所有任务分为两种,一种同步任务,一种是异步任务,同步任务会在主线程排队执行,遇到异步事件不会等待它返回结果,而是将这个事件挂起,继续执行执行栈中的其他任务。当异步事件返回结果,将它放到事件队列中,被放入事件队列不会立刻执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值