js执行任务顺序

195 阅读1分钟
  • 执行全局Script同步代码,这些同步代码有一些是同步语句,有一些是异步语句(比如setTimeout等);

  • 全局Script代码执行完毕后,执行栈Stack会清空;

  • 微队列中取出位于队首的回调任务,放入执行栈Stack中执行,执行完后微队列长度减1;

  • 继续循环取出位于微队列的任务,放入执行栈Stack中执行,以此类推,直到直到把微任务执行完毕。注意,如果在执行微任务的过程中,又产生了微任务,那么会加入到微队列的末尾,也会在这个周期被调用执行;

  • 微队列中的所有微任务都执行完毕,此时微队列为空队列,执行栈Stack也为空;

  • 取出宏队列中的任务,放入执行栈Stack中执行;

  • 执行完毕后,执行栈Stack为空;

  • 重复第3-7个步骤;

promise属于微任务,先执行,setTimeout属于宏任务,最后执行 作者:sevenliao
链接:juejin.cn/post/707670… 来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。