啥是事件环呢?

事件环的概念


对于类似我们这种非计算机或者软件专业毕业的野路子,当第一次接触事件环这个概念其实是懵比的,具体是个啥呢,
我的理解是:

在JS的执行栈中,同步任务进入主执行栈(也可以说主线程),
而异步任务进入任务队列(TaskQueue)等待执行,任务队列可以理解成
一个消息队列,I/O设备完成一件事,就向任务队列添加一个事件,
一旦主执行栈中所有的同步任务执行完毕,就会读取任务队列中等待的任务,
并放入执行栈开始执行,其实就是执行异步任务的回调函数,
所以说异步任务必须指定回调函数,主线程会不断的循环这个动作,
所以这种运行机制又称为EventLoop(事件循环)
复制代码


借鉴其他的理解

( 这里解释一下什么叫‘任务队列’:这是一个先进先出的数据结构,排在前面的事件会优先被主线程读取,但是当有定时器的时候主线程会先检查一下执行时间。)我们画一张图来理解这个:

从这张图中我们可以看到其中有宏任务(MacroTask)和微任务(MicroTask)之分,我们来说下这个宏任务与微任务。

宏任务包括:
  1. setImmediate
  2. setTimeout
  3. setInterval
微任务包括:
  1. process.nextTick
  2. Promise
  3. MutaionObserver

总结

事件环其实是一个抽象的一个概念,仁者见仁吧,想更好的理解它可以先从队列,栈,宏任务,微任务入手去了解,纯理论的东西更多还是靠个人理解,多写代码体会下代码的执行顺序。 欢迎大家相互交流,随手记录下最近所学所想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值