参考答案
结论: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。注意微任务递归可能造成宏任务饥饿。