- JavaScript是一门单线程的语言,它的异步和多线程是通过EventLoop事件循环机制来实现的,主要由调用栈,消息队列(宏任务队列),微任务队列组成
- EventLoop开始时,会逐行执行代码,遇到宏任务把它放到消息队列,遇到微任务把它放到微任务队列,其他的代码直接放入调用栈并执行
- fecth,事件回调,setTimeout,setInterval会放在宏任务队列,
- promise.then,async等异步操作会放在微任务队列
- 当主栈执行完毕后会把微任务队列里面的任务压入调用栈,微任务全部执行完毕清空后会执行宏任务队列直到执行完毕