javascript 事件循环机制

本文解释了JavaScript为何选择单线程,介绍了执行栈、任务队列、宏任务和微任务的概念,以及它们在js执行流程中的作用,特别强调了微任务对异步处理的优先级。

一、js单线程

        由于js是单线程,所以需要事件循环机制来处理同步任务和异步任务之间的执行逻辑。那么Js为什么选择单线程呢?这是因为Js主要服务于浏览器中用于控制浏览器的dom元素,试想下如果js是多线程那么会出现多个线程同时操作一个Dom元素的情况,显然这样是不可取的。

二、一些概念

  • 执行栈:主线程执行代码的地方。
  • 任务队列:存放异步任务回调的地方。
  • 宏任务:setTimeout、setInterval、Ajax、Dom事件
  • 微任务:Promise的回调、async/await、process.netxtTick()

三、循环流程

        js执行代码的过程是自上而下,遇到同步任务直接把同步任务压入执行栈执行代码,遇到异步任务会把异步任务的回调放入任务队列中。等到所有同步任务执行完毕,web api回去任务队列中查找是否有任务需要执行,如果有则依次压入执行栈中执行异步任务的回调。需要注意的一点是,微任务的优先级要大于宏任务,也就是如果任务队列中有微任务,则微任务先执行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值