回调原则:
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] 举报,一经查实,本站将立刻删除。