概念
-
javascript单线程的执行的,在javascript异步实现是通过事件循环来实现的(类似早期的windows编程)。
-
宏任务 一个队列,宏任务跟当前执行脚本是平级的,例如setTimeOut等
-
微任务 一个队列,微任务是当前脚本执行后会一直等待执行然后再执行宏任务,例如promise等
-
事件循环 事件循环逻辑
while (EventLoop.waitForTask()) {
const taskQueue = EventLoop.selectTaskQueue();
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask();
}
const microtaskQueue = EventLoop.microTaskQueue;
while (microtaskQueue.hasNextMicrotask()) {
microtaskQueue.processNextMicrotask();
}
rerender();
}