JS之事件循环(event loop)

一、什么是事件循环?


定义

  1. 因为js是一门单线程语言,为了防止阻塞,我们把代码(任务)分成了同步和异步。
  2. 同步代码给js引擎(js主线程),异步代码交给宿主环境(浏览器/Node)。
  3. 同步代码放入执行栈中,异步代码等待时机成熟送入任务队列中排队。
  4. 执行栈中执行完毕,会去任务队列中看是否有异步任务,有就推送到执行栈中执行,反复循环查看执行, 这种过程就是事件循环(eventloop)。

二、事件循环的过程

1.流程图

2.文字描述

1.先执行所有同步任务,碰到异步任务放到任务队列中
2.同步任务执行完毕,开始执行当前所有的异步任务
3.先执行异步任务队列所有的微任务
4.然后执行一个宏任务
5.然后再执行所有的微任务
6.再执行一个宏任务,再执行所有的微任务......依此类推到执行结束。


三、异步任务


定义:异步任务指的是不进入主线程、而进入"任务队列"的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。

异步任务又分为宏任务和微任务:

micro-task(微任务):Promise.then,Promise.catch,Async/Await,process.nextTick

macro-task(宏任务):包括整体代码script,setTimeout,setInterval

发现了一篇总结的很详细很到位的文章,推荐大家进去学习。点击此处打开链接

posted @ 2022-08-08 15:13  Zzxzzx999  阅读(179)  评论(0)    收藏  举报