for-await-of - 循环的含义及其在 ES9 中的实现(The Meaning of for-await-of Loops and Their Implementation in ES9)

阅读时长 3 分钟读完

JavaScript 在 ES2018(ES9) 中新增了一个 for-await-of 循环语法,该语法用于遍历异步迭代器中的内容。本文将探讨 for-await-of 循环的含义以及在 ES9 中的实现,并提供一些示例代码供读者参考。

for-await-of 循环的含义

for-await-of 循环最基本的含义是,在异步迭代器(即返回 promise 的迭代器)中循环,等待每个迭代值(resolve 或 reject) 返回。这表示,每当迭代器返回一个 promise,在该 promise fulfilled 之前,循环都将阻塞,并等待后续的值返回。

为了更清晰地说明 for-await-of 循环的含义,我们将通过以下示例解释:

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

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

-------

在上面的代码中,我们创建了一个异步迭代器 asyncGenerator 并在 test 函数内使用 for-await-of 循环进行循环迭代,输出结果为 1、2、3。此示例演示了 for-await-of 循环在异步迭代器中的使用方法。

for-await-of 循环在 ES9 中的实现

在 ES9 中,for-await-of 循环使用了新的 Symbol.asyncIterator 语法。Symbol.asyncIterator 提供了一种标准接口,以促进异步迭代器开发及其在 for-await-of 循环中的使用。

以下是对 Symbol.asyncIterator 接口的解释:

在实际使用中,for-await-of 循环通过迭代器和 promises 实现,它在每次循环期间以及每当一个 promise 操作完成后阻塞。

在下面的代码片段中,我们将使用 for-await-of 循环并演示其实现方式:

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

在上面的代码片段中,我们创建了一个异步生成器 createAsyncIterable 和一个异步迭代器 createReadableStream,使用 for-await-of 循环并循环迭代异步迭代器中的内容。

总结

for-await-of 循环在 ES9 中为开发人员提供了一个更为优秀和灵活的异步编程模式,可以轻松地遍历异步迭代器并等待每个 promise 操作完成。为了充分利用 for-await-of 循环,我们建议进一步学习 Symbol.asyncIterator 和异步迭代器,以及使用最佳实践。

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

纠错
反馈