什么是事件循环?

首先JS是单线程的,也就意味着同一时间内只能做一件事,但是这并不意味单线程就是阻塞,而实现单线程非阻塞的方法就是事件循环

JS所有任务中又分为同步任务跟异步任务:
①同步任务:立即执行的任务,同步任务一般会直接进入到主线程中执行
②异步任务:异步任务的执行,比如Ajax网络请求,setTimeout定时器等等

同步任务与异步任务的运行流程图如下:

sjxh.png

JS它会先执行同步任务,然后执行异步任务,异步任务又分为宏任务跟微任务,遇到异步微任务则将微任务放入微任务队列中,遇到宏任务则将宏任务放在宏任务队列中,同步任务执行完毕之后再去异步任务中先执行微任务后执行宏任务,一直循环至所有任务执行完毕

宏任务跟微任务的关系如图所示:

b62f5c1e090c159a35914f547570df17.png

常见的微任务有:promise.then(),Node.js-nextTick
常见的宏任务有:定时器,Ajax,事件函数

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容