- EventLoop
事情循环,监听调用栈和消息队列。 当代码从上往下依次执行时,它们会依次压入调用栈。如果中间穿插了有异步代码,比如settimeout定时器。定时器在被压入栈的同时会开启一个倒计时。当栈内存中的函数执行完并且settimeout倒计时结束,settimeout的匿名函数会被消息队列。这时事件循环开始工作,它会监听到,消息列队中有数据,将消息队列中的第一个函数压入调用栈,执行该函数。 - 消息队列
可以看做等待执行任务的列表。调用栈负责执行任务,消息列表负责管理任务,让它们排好队。事情循环负责中间协调,把消息队列的任务送到调用栈中执行该任务。 - 宏任务
回调队列中的任务 - 微任务
宏任务执行过程中临时加一些额外需求,这些需求可以做为一个新的宏任务重新到队列中去排队,也可以做为当前任务的一个微任务,当前任务执行完毕后立即执行,无需再去队列中排队。