简单记录一下 JavaScript 中事件循环的执行顺序( 同步异步任务 )
ps:以下均是个人认知,如有问题请大佬纠正,我会及时更改
<script>
// 创建一个延时器( 异步宏任务 )
// 异步宏任务会等到所有其余所有任务执行完毕后才会执行
setTimeout(() => {
console.log("setTimeout");
}, 0);
// 创建一个 Promise
// Promise 本身是一个同步任务
// Promise 本身并不是一个异步任务,只有 .then 或 .catch 时才是异步任务
// Promise .then 或 .catch 时是异步微任务
new Promise((resolve, reject) => {
console.log("new Promise");
resolve(); // 调用 resolve() 执行 .then ; 调用 reject() 执行 .catch()
})
.then(() => {
console.log("Promise .then");
})
.catch(() => {
console.log("Promise .catch");
});
console.log("同步任务");
// 执行打印循序为
// new Promise
// 同步任务
// Promise .then
// setTimeout
// 所以 "在同一作用域 !!中" JavaScript 中事件循环( 同步异步任务 )执行顺序为
// 1.同步任务
// 2.异步微任务
// 3.异步宏任务
</script>