简述我对event loop的理解

本文介绍了JavaScript的Event Loop机制,解释了单线程如何处理同步和异步任务,特别是宏任务和微任务的区别以及它们在执行顺序上的规则。通过示例阐述了async/await的执行流程,强调了每次宏任务执行后会先处理所有微任务的特点。
摘要由CSDN通过智能技术生成

Javascript是单线程的,那么各个任务进程是按照什么样的规范来执行的呢?这就涉及到Event Loop的概念了,EventLoop是在html5规范中明确定义的;

何为eventloop,javascript中的一种运行机制,用来解决浏览器单线程的问题

Event Loop是一个程序结构,用于等待和发送消息和事件。

同步任务、异步任务、微任务、宏任务

javascript单线程任务从时间上分为同步任务异步任务,而异步任务又分为宏任务(macroTask)微任务(microTask)

宏任务:主代码块、setTimeOut、setInterval、script、I/O操作、UI渲染

微任务:promise、async/await(返回的也是一个promise)、process.nextTick

在执行代码前,任务队列为空,所以会优先执行主代码块,再执行主代码块过程中,遇到同步任务则立即将任务放到调用栈执行任务,遇到宏任务则将任务放入宏任务队列中,遇到微任务则将任务放到微任务队列中,主线程任务执行完之后,先检查微任务队列是否有任务,有的话则将按照先入先出的顺序将先放进来的微任务放入调用栈中执行,并将该任务从微任务队列中移除,执行完该任务后继续查看微任务队列中是否还有任务,有的话继续执行微任务,微任务队列null时,查看宏任务队列,有的话则按先进先出的顺序执行,将任务放入调用栈并将该任务从宏任务队列中移除,该任务执行完之后继续查看微任务队列,有的话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值