为什么有事件循环?
JavaScript是单线程语言,所以会产生异步。在执行任务的时候,先检查事件队列是否为空,不为空的话将任务放到执行栈执行,执行栈执行过后为空就会又回到事件队列去判断事件队列是否为空,这样就形成了事件循环的简单机制。
栈:先进后出
队列:先进先出
执行栈:可以理解为js的单线程执行(正在做的事情)唯一的
事件队列:js的todolist(后面要做的事情)可以有多个
当执行栈为空的时候就会去看看事件队列中还有没有要继续做的事情。
宏任务:setTimeOut
微任务:promise
二者都是异步事件,先微任务后宏任务。