JavaScript Async/Await

2025年4月23日 | 阅读 4 分钟

在 JavaScript 中,async/await 提供了一种更简洁、更易读的方式来处理 Promise,使得异步代码看起来更像同步代码。

async 用于声明一个 函数 为异步函数,而 await 则暂停执行,直到一个 Promise 被解析,这有助于简化异步操作的处理。

语法

JavaScript 中的 Async 函数是什么?

JavaScript 中,async 函数用于编写基于 Promise 的代码,使其看起来更像同步代码,这有助于我们确保执行线程不会被阻塞。它会使函数在没有显式返回 Promise 时,总是返回一个 Promise。

语法

async 函数的语法如下:

示例

立即执行

输出

Hello, Welcome to TpointTech

JavaScript 中的 Await 关键字是什么?

在 JavaScript 中,await 是一个关键字,用于通过传入一个 Promise 作为表达式来解包 Promise。使用 await,您可以暂停其周围 async 函数的执行,直到 Promise 被解析。

当执行恢复时,await 表达式的值将成为已解析 Promise 的值。

语法

JavaScript 中 await 关键字的语法如下:

示例

立即执行

输出

1
2
Hello, Welcome to TpointTech

示例 2

立即执行

Async/Await 如何工作?

在 JavaScript 中,async 函数可以包含零个或多个 await 表达式。await 表达式通过停止执行直到返回的 Promise 被 fulfilled 或 rejected,使得返回 Promise 的函数表现得像同步函数一样。

Promise 的解析值被视为 await 表达式的返回值。

Async 关键字

在 JavaScript 中,当您使用 async 声明一个函数时,它会自动成为一个返回 Promise 的异步函数。

Await 关键字

await 关键字用于通过传入一个 Promise 作为表达式来解包 Promise。使用 await,您可以暂停其周围 async 函数的执行,直到 Promise 被解析。

Promise 解析

在 JavaScript 中,当一个 Promise 被解析时,async 函数的执行会恢复,并且解析后的 Promise 的值将可用。

执行恢复

Promise 被 settlement 后,async 函数将从暂停的地方继续执行,await 表达式将计算为 Promise 的解析值。

非阻塞性

在 JavaScript 中,当程序的一部分在等待 Promise 解析时,程序的另一部分会在后台继续执行。

Async/Await 中的错误处理

JavaScript 提供了用于处理 Promise 的预定义参数:resolve 和 reject。

resolve: 当异步任务成功完成时使用。

reject: 当异步任务失败时使用,并提供失败原因。

示例

立即执行

输出

Runtime Error:
Error occurred: Failed to fetch data

Async/Await 的优势

JavaScript 中的 async/await 有一些优势,例如:

  • 提高可读性: JavaScript 的 async/await 使异步代码看起来和感觉上更像同步代码,从而更容易理解和维护。
  • 简化的错误处理: try…catch 块提供了一种比 Promise 链更简洁、更直接的方式来处理异步函数中的错误。
  • 更易于调试: 使用 async/await,您可以像使用同步代码一样使用断点,这使得逐步执行代码流更加容易。
  • 消除了回调地狱: 通过使用 JavaScript 的 async/await,我们可以避免嵌套回调和复杂的 Promise 链,使代码更具线性可读性。
  • 增强的代码结构: 通过使用 async/await,您可以使异步函数的结构更清晰,从而更容易遵循代码的逻辑和流程。

结论

总而言之,JavaScript 的 async/await 功能是一个强大的工具,它允许程序员以更同步的方式编写异步代码。它简化了 Promise 的处理,并使错误处理更加容易。


下一个主题JavaScript DOM