知道事件循环机制,怎么向面试官表达清楚?

87 阅读2分钟

引言

之前写了一篇关于事件循环机制的文章,介绍了一下事件循环机制的一些内容。今天我们来聊一下如何向清楚地向面试官表达这个只知识点

你心里其实知道事件循环机制的原理,但是面试的时候,可能表达不出来,有没有老铁遇到过这种情况?

下面,我来教你们组织一下语言

1.首先,当面试官让你谈一谈事件循环机制,你得告诉面试官,什么是事件循环机制

事件循环(Event Loop)是 JavaScript 中管理异步任务的机制,确保程序能够有序地执行同步和异步代码。

2 其次,分析一下它的由来

JS是一门单线程的编程语言,分为同步代码异步代码同步代码:不需要消耗时间的代码,异步代码:需要消耗时间的代码

异步代码由分为宏任务微任务

3.然后,你得向面试官介绍一下常见的异步代码(宏任务,微任务)有哪些

宏任务 (Macro Tasks)

  • setTimeout
  • setInterval
  • setImmediate (Node.js)
  • I/O (Node.js)
  • UI 渲染
  • DOM 操作
  • fetch (当它导致网络请求时)
  • XMLHttpRequest
  • readFile/writeFile (Node.js)

微任务 (Micro Tasks)

  • Promise.then()
  • MutationObserver
  • queueMicrotask
  • process.nextTick (Node.js)

这里要注意Promise是宏任务,Promise.then() 和 Promise.catch() 是微任务

3.最后,你再向面试官表达一下 是事件循环机制的过程

  1. 执行同步代码:从上到下执行同步代码。

  2. 遇到异步任务

    • 如果是宏任务(如 setTimeout),将其回调放入任务队列。
    • 如果是微任务(如 Promise 的 .then),将其回调放入微任务队列。
  3. 执行栈为空:当执行栈中的同步代码执行完毕后,执行栈变为空。

  4. 处理微任务:执行所有微任务队列中的回调,直到微任务队列为空。

  5. 处理宏任务:从任务队列中取出第一个宏任务,将其回调放入执行栈并执行。

  6. 重复步骤 4 和 5:每次宏任务执行完后,再次处理微任务队列,然后继续处理任务队列中的下一个宏任务。

通过这样的表达,你可以清晰地向面试官展示你对事件循环机制的理解。