js 异步执行顺序

  1. js的执行顺序,先同步后异步
  2. 异步中任务队列的执行顺序: 先微任务microtask队列,再宏任务macrotask队列
  3. 调用Promise 中的resolve,reject属于微任务队列,setTimeout属于宏任务队列
    注意以上都是 队列,先进先出。

微任务包括 process.nextTickpromiseMutationObserver
宏任务包括 scriptsetTimeoutsetIntervalsetImmediateI/OUI rendering

题目如下:

(function() {

   setTimeout(() => {
       console.log(0);
   });

   new Promise(resolve => {
       console.log(1);

       setTimeout(() => {
           resolve();
           Promise.resolve().then(() => console.log(2));
           console.log(3);
       });

       Promise.resolve().then(() => console.log(4));

   }).then(() => {
       console.log(5);
       Promise.resolve().then(() => console.log(8)); //这句是多加的
       setTimeout(() => console.log(6));
   });

   console.log(7);

})();

答案如下:
1、9、5、0、6、2、7、4、8、3

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容