微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Promise、Js异步之宏队列与微队列

回调原则:

1. 宏列队: 用来保存待执行的宏任务(回调), 比如: 定时器回调/DOM事件回调/ajax回调
2. 微列队: 用来保存待执行的微任务(回调), 比如: promise的回调/MutationObserver的回调
3. JS执行时会区别这2个队列
	JS引擎首先必须先执行所有的初始化同步任务代码
	**每次准备取出第一个宏任务执行前, 都要将所有的微任务一个一个取出来执行**
原则:每次准备取出第一个宏任务执行前, 都要将所有的微任务一个一个取出来执行
setTimeout(() => { // 会立即放入宏列队
      console.log('timeout callback1()')
      Promise.resolve(3).then(
        value => { // 会立即放入微列队
          console.log('Promise onResolved3()', value)
        }
      )
    }, 0)
    setTimeout(() => { // 会立即放入宏列队
      console.log('timeout callback2()')
    }, 0)
    Promise.resolve(1).then(
      value => { // 会立即放入微列队
        console.log('Promise onResolved1()', value)
      }
    ) 
    Promise.resolve(2).then(
      value => { // 会立即放入微列队
        console.log('Promise onResolved2()', value)
      }
    ) 

测试结果:

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐