-
执行全局Script同步代码,这些同步代码有一些是同步语句,有一些是异步语句(比如setTimeout等);
-
全局Script代码执行完毕后,
执行栈Stack会清空; -
从
微队列中取出位于队首的回调任务,放入执行栈Stack中执行,执行完后微队列长度减1; -
继续循环取出位于
微队列的任务,放入执行栈Stack中执行,以此类推,直到直到把微任务执行完毕。注意,如果在执行微任务的过程中,又产生了微任务,那么会加入到微队列的末尾,也会在这个周期被调用执行; -
微队列中的所有微任务都执行完毕,此时微队列为空队列,执行栈Stack也为空; -
取出
宏队列中的任务,放入执行栈Stack中执行; -
执行完毕后,
执行栈Stack为空; -
重复第3-7个步骤;
promise属于微任务,先执行,setTimeout属于宏任务,最后执行
作者:sevenliao
链接:juejin.cn/post/707670…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。