一、event loop
JS主线程不断的循环往复的从任务队列中读取任务,执行任务,这中运行机制称为事件循环(event loop)。
二、Microtasks、Macrotasks
Microtasks(微任务)和Macrotasks(宏任务)是异步任务的一种类型,Microtasks的优先级要高于Macrotasks,下面是它们所包含的api:
microtasks
process.nextTick
promise
Object.observe (废弃)
MutationObserver
macrotasks
setTimeout
setImmerdiate
setInterval
I/O
UI 渲染
注意:
每一个 event loop 都有一个 microtask queue
每个 event loop 会有一个或多个macrotaks queue ( 也可以称为task queue )
一个任务 task 可以放入 macrotask queue 也可以放入 microtask queue中
每一次event loop,会首先执行 microtask queue, 执行完成后,会提取 macrotask queue 的一个任务加入 microtask queue, 接着继续执行microtask queue,依次执行下去直至所有任务执行结束。
先了解JavaScript的执行机制(同步和异步)
1 同步和异步任务分别进入不同的执行”场所”,同步的进入主线程,异步的进入Event Table并注册函数。
2 当指定的事情