js中事件循环其实就是为了解决js是单线程,只有一个线程处理js代码,所提出来的一个代码执行机制 在这个机制中,主要有三种东西,执行栈,执行js代码的。宏任务队列,微任务队列。(以及其它辅佐线程,比如定时器的时间计算就在定时器线程,异步http请求线程) 宏任务队列:主要存放定时器、script标签 微任务:promise.then(),await后面的代码。
流程
js主线程会查看执行栈中是否有任务,有则执行。无则去看看微任务。微任务如果有则将其放到主线程中执行。如果期间产生微任务或者宏任务,将其放到对应的任务队列中。如果无微任务,则看看是否有宏任务,如果有,则执行。每次主线程空闲,都会看看有无微任务或者宏任务,优先级是微任务再到宏任务