js事件循环机制(Event Loop)

JS的执行机制是一个主线程和一个任务队列(Eventqueue),所有的同步任务都是在主线程上直接执行的。异步任务都被放在任务队列中。(这里盗了一个图)这时程序的执行还没有真正的进入事件循环。
在这里插入图片描述
接下来异步任务的执行,就涉及到了宏任务和微任务。

所有的任务在主线程执行,会形成一个执行栈,执行栈会区分出宏任务和微任务,并把任务放在各自的任务队列中。

宏任务一般包括整体SCRIPT代码块,seiTimeout,setInterval。

微任务:promise的then方法,process,nextTick。

所有的异步任务都会被分为宏任务和微任务。宏任务队列一次只会存放一个宏任务,当宏任务队列的任务执行完后,会执行所有的微任务。所有微任务执行完后,会进入下一个事件循环。

这是宏任务队列会进入下一个宏任务,并执行这个宏任务。

接下来在看一个逻辑图来加深一下理解。(也是盗的图,略略…)
在这里插入图片描述
一个宏任务执行完后,执行所有的微任务,所有的微任务执行完后,再次开始执行下一个进入宏任务队列的宏任务。这个过程就是一次事件循环。

所有任务的执行就形成整个的事件循环。

猜你喜欢

转载自blog.csdn.net/qq_29055201/article/details/90762207