JavaScript 面试题
目录

JavaScript 中 async/await 的原理是什么?

· 约 4 分钟读完 · 第 398 / 507 章

推荐答案

async/await 是 JavaScript 中处理异步操作的语法糖,基于 Promise 实现。async 函数会返回一个 Promise 对象,而 await 关键字会暂停函数的执行,直到等待的 Promise 被解决(resolved)或拒绝(rejected)。

本题详细解读

async 关键字

  • async 关键字用于声明一个异步函数。当你在函数前加上 async 时,这个函数会自动返回一个 Promise 对象。
  • 如果函数内部返回一个值,这个值会被包装成一个 resolved 状态的 Promise。
  • 如果函数内部抛出异常,这个异常会被包装成一个 rejected 状态的 Promise。

await 关键字

  • await 关键字只能在 async 函数内部使用。它用于等待一个 Promise 对象的解决或拒绝。
  • 当 await 遇到一个 Promise 时,它会暂停当前 async 函数的执行,直到 Promise 被解决或拒绝。
  • 如果 Promise 被解决,await 会返回解决的值;如果 Promise 被拒绝,await 会抛出异常。

错误处理

  • 使用 try/catch 结构可以捕获 await 表达式中的错误。

与 Promise 的关系

  • async/await 是 Promise 的语法糖,本质上仍然是基于 Promise 的。它使得异步代码的编写和阅读更加直观,类似于同步代码。

总结

  • async/await 使得异步代码的编写更加简洁和易读,同时保留了 Promise 的强大功能。
  • 它通过暂停函数的执行来等待异步操作完成,从而避免了回调地狱(Callback Hell)和复杂的 Promise 链。