28. JavaScript 事件循环机制
-
什么是事件循环(Event Loop)?
- 事件循环 是 JavaScript 中的执行机制,用来处理异步操作。JavaScript 是单线程的,它通过事件循环来管理执行栈中的同步任务和任务队列中的异步任务。
-
事件循环的工作流程是什么?
- 执行栈(Call Stack):同步代码会依次压入执行栈,并按顺序执行。执行完一个任务后从栈中弹出,继续下一个任务。
- 任务队列(Task Queue):异步操作(如
setTimeout
、Promise
)会将回调放入任务队列中等待执行。 - 事件循环:事件循环不断检查执行栈是否为空,若为空,会从任务队列中取出下一个任务,压入执行栈中执行。
-
微任务和宏任务的区别?
- 宏任务(Macro Task):包括
setTimeout
、setInterval
、DOM 事件、HTTP 请求等,这些任务在每次事件循环结束后会被放入任务队列中等待执行。 - 微任务(Micro Task):包括
Promise.then
、MutationObserver
等,微任务的执行优先级高于宏任务,它们会在当前任务执行完之后立即执行,而不是等待下一个事件循环。
- 宏任务(Macro Task):包括
-
代码执行顺序示例:
console.log('1'); // 同步任务,立即执行 setTimeout(() => console.log('2'), 0); // 宏任务,下一次事件循环执行 Promise.resolve().then(() => console.log('3')); // 微任务,当前任务完成后执行 console.log('4'); // 同步任务,立即执行 // 输出顺序为:1, 4, 3, 2
29. JavaScript 异步编程
-
JavaScript 中有哪些处理异步编程的方法?
-
回调函数(Callback):通过将一个函数作为参数传递给另一个函数,在异步操作完成后调用该回调函数。
setTimeout(() => { console.log('异步操作'
-