面试真题

前端 · 中等 · 百度

宏任务 / 微任务 / `MessageChannel`

中等 前端 🎤 百度
参考答案
结论:JS事件循环里微任务优先于宏任务;宏任务含setTimeout、setInterval、I/O、UI渲染、MessageChannel;微任务含Promise.then、queueMicrotask、MutationObserver。原理:每轮先执行一个宏任务,然后清空微任务队列,再渲染。MessageChannel通过postMessage触发回调,属宏任务,常用于异步转移控制权。示例:Promise.resolve().then(()=>console.log('micro')); setTimeout(()=>console.log('macro'),0); 输出micro先于macro。注意微任务递归可能造成宏任务饥饿。
题目整理自公开面经,答案由校招宝自研生成,仅供参考