宏任务和微任务的分类
宏任务 macrotask:
setTimeout
setInterval
js主代码块
setImmediate(Node)
requestAnimationFrame(浏览器)
I/O(ajax)
UI rendering
微任务 microtask:
process.nextTick(node)
Promise的then方法
MutationObserver
1. async/await
async function test(){
console.log(1)
}
async function test2(){
await test()
console.log(3)
}
test2()
console.log(2)
结果
// 1
// 2
// 3
2. promise
console.log(1)
function test(){
return new Promise((resolve,rejuct)=>{
resolve()
console.log(2)
})
}
test().then(()=>{
console.log(4)
})
console.log(3)
// 结果
// 1
// 2
// 3
// 4
// Promise then() 执行时机 是在本轮事件循环结束后 执行
console.log("start");
setTimeout(() => {
console.log("children2");
Promise.resolve().then(() => {
console.log("children3");
});
}, 0);
new Promise(function (resolve, reject) {
console.log("children4");
setTimeout(function () {
console.log("children5");
resolve("children6");
}, 0);
}).then((res) => {
console.log("children7");
setTimeout(() => {
console.log(res);
}, 0);
});
// start children4 children2 children3 children5 children7 children6
async/await promise 事件轮训 面试题
最新推荐文章于 2023-09-08 16:59:05 发布