参考链接:https://mp.weixin.qq.com/s/m4hFgXfW_8jSuf2Y9RURDw
js是一门单线程语言,接受的“多线程”都是应单线程模拟出来的,所谓的异步也是用同步的方法模拟的。javascript的执行机制的Event Loop
除了广义的同步任务和异步任务,还有更细的定义:
- macro-task(宏任务):包括整体代码script,setTimeout,setInternal
- micro-task(微任务):Promise,process.nextTick
不同类型的任务会进入对应的Event Queue,例如setTimeout he setInternal
会进入相同的Event Queue。
顺序:进入整体代码(宏任务)后,开始第一次循环。接着执行所有的微任务。然后再次从宏任务开始,找到其中的任务队列执行完毕,在执行所有的微任务。
执行结果是1,7,6,8,2,4,3,5,9,11,10,12