Go
Go
文章目录
  1. JS 任务

JS Event Loop

JS 任务

JS任务分为两种,同步任务、异步任务。

同步和异步任务分别进入不同的执行”场所”,同步的进入主线程,

异步任务分宏事件和微事件,进入Event Table并注册函数。

当指定的事情完成时,Event Table会将这个函数移入任务队列(Event Queue)。

主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。

上述过程会不断重复,也就是常说的Event Loop(事件循环)。

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

micro-task(微任务):Promise,catch

1
2
3
4
5
6
7
(1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
(2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
(3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
(4)主线程不断重复上面的第三步。
支持一下
扫一扫