详解 Node.js 中的 async/await 关键字及其使用方法

阅读时长 4 分钟读完

在 Node.js 中,异步编程几乎是不可避免的。然而传统的回调函数方式却往往复杂且难以维护。ES7 中引入了 async/await 关键字,使得异步编程变得更加直观和容易理解。本文将详细介绍 async/await 的原理和使用方法,并提供一些示例代码。

async/await 的原理

在 ES7 中,async/await 本质上是基于 Promise 的语法糖。在实际运行中,async 函数返回一个 Promise 对象,await 可以控制代码的执行顺序,保证异步操作的顺序执行,避免了回调函数嵌套的问题。

这里有一个简单的示例代码,演示了 async/await 实现异步操作的原理。

-- -------------------- ---- -------
-------- ---------------------- -
  ------ --- --------------- -- -
    ------------- -- -
      --------------------
    -- ------
  ---
-

----- -------- ----------- -
  -----------------------

  ----- ------ - ----- -----------------------

  --------------------
  -- -------- ------- ----------
-

------------

上述代码中,resolveAfter2Seconds 函数返回一个 Promise 对象,等待 2000 毫秒后才会 resolve。在 asyncCall 函数中,我们使用 await 等待 resolveAfter2Seconds 返回的结果。当 resolveAfter2Seconds 返回结果后,asyncCall 函数继续执行,并输出结果。

async/await 的使用方法

  1. async 函数

使用 async 关键字定义一个异步函数,在异步函数中可以使用 await 对异步操作进行等待。

async 函数在被调用时会立即返回一个 Promise 对象,可以用于链式调用。

  1. await 表达式

使用 await 表达式等待一个返回结果的 Promise 对象,代码会暂停执行,直到原 Promise 对象 resolve 或 reject 后再继续执行。

  1. try-catch 结构

try-catch 结构可以捕获异步函数中的异常。

async/await 示例代码

1. 使用 async/await 调用接口

-- -------------------- ---- -------
----- -------- ----------- -
  ----- -------- - ----- ---------------------------------------------
  -- ------------- -
    ----- ---- - ----- ----------------
    ------ -----
  - ---- -
    ----- --- -------------- -------- --- --- ------
  -
-

上述代码中,getUser 函数使用 fetch 方法调用一个接口。使用 await 等待 fetch 方法返回的 Promise 对象,如果响应状态是 200 OK,使用 await 方法等待解析出来的 JSON 对象。否则,抛出异常。

2. 使用 Promise.all 实现多个异步操作并行执行

上述代码中,getUserAndOrders 函数同时获取用户信息和订单信息。使用 Promise.all 接收一个 Promise 对象数组,等待所有 Promise 对象都 resolve 后再继续执行。返回打包好的用户信息和订单信息。

总结

async/await 关键字使得异步编程变得更加简单和直观,避免了传统回调函数嵌套的问题。这种新的语法糖在 Node.js 中得到了广泛的应用,在实现并行异步操作、异常处理等方面都非常有用。学习和掌握 async/await,将有助于提高编写高质量 Node.js 代码的能力。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649ac88b48841e98947baa98

纠错
反馈