使用 ES8 的 for await...of 循环遍历异步生成器

阅读时长 5 分钟读完

异步编程在前端开发中是非常常见的,而异步生成器则是异步编程中重要的工具之一。ES8 的 for await...of 循环提供了一种简单而有效的方法来遍历异步生成器,本文将详细介绍这个方法及其使用方法。

异步生成器是什么?

异步生成器是一种特殊的函数,它可以生成一个异步可迭代对象。异步可迭代对象是可以使用 for await...of 循环遍历的对象,每次循环可以返回一个异步结果。

异步生成器使用 asyncyield 关键字来定义,async 表示函数是异步函数,yield 表示函数在返回值后会暂停,等待下一次调用时继续执行。

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

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

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

for await...of 循环的用法

ES8 引入了 for await...of 循环来遍历异步可迭代对象。与 for...of 循环类似,它遍历对象的每个元素并执行指定的代码块。

for await...of 循环使用 await 关键字来等待异步结果,每次遍历时暂停执行,直到异步结果返回并被解构为 value

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

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

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

for await...of 循环的错误处理

由于异步生成器可能抛出异步错误,因此需要对 for await...of 循环进行错误处理,以确保代码的可靠性和鲁棒性。

错误处理需要使用 try...catch 语句来捕获异常,如果发生异常,则可以将异常传递到指定的错误处理程序中。

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

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

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

示例:使用 for await...of 循环遍历 HTTP 响应

为了更好地理解 for await...of 循环的用法,我们可以通过一个示例来演示如何使用它来遍历 HTTP 响应。

需要引入 node-fetch 模块来发起 HTTP 请求。

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

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

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

总结

for await...of 循环是一种遍历异步可迭代对象的有效方法,它使用 await 关键字来等待异步操作的结果,并使用 try...catch 语句来处理错误。异步生成器是一种特殊的函数,它可以生成异步可迭代对象,它是异步编程中非常有用的工具之一。它不仅可以提升代码的可读性,还可以简化异步编程的复杂性。

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

纠错
反馈