ES9 中的 for await...of 循环的使用方法介绍

阅读时长 3 分钟读完

在 ECMAScript 9 中,推出了一个新的语法 for await...of,用于处理异步的迭代器。它可以用于遍历异步可迭代对象,操作异步生成器函数,以及同时进行多个异步操作等。在本文中,我们将介绍 for await...of 循环的使用方法,并提供一些示例代码,以展示它的深度和指导意义。

基本用法

for await...of 循环的格式与普通的 for...of 循环非常相似,只不过在前面加了一个 await 关键字。它有一个异步可迭代对象作为循环体,而异步可迭代对象通常是一个迭代器或一个带有异步 next() 方法的对象。用法如下:

上面的代码声明了一个名为 processAsyncIterable 的异步函数,它将异步可迭代对象作为参数,并通过 for await...of 循环遍历异步可迭代对象中的每个元素。在循环内部,我们可以使用常规的 await 语句来等待每个元素的异步操作。如果异步可迭代对象包含了多个异步操作,它们将会并行进行。

多个异步操作

前面所述的示例包含了多个异步操作,但它们是独立的,因此它们将按顺序执行。下面我们将介绍一个更为复杂的示例,在这个示例中,我们将使用 Promise.all() 方法来同时执行多个异步操作:

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

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

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

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

在上面的示例中,我们声明了一个名为 processMultipleAsyncIterable 的异步函数,它将两个异步可迭代对象作为参数,并在 for await...of 循环中,使用异步 await 和异步 next() 方法来处理它们。一旦我们处理完了所有的异步操作,我们将使用 Promise.all() 方法来等待它们全部完成,并将结果返回出去。

异常处理

由于操作异步函数时,可能会发生异常错误,因此我们需要在 for await...of 循环中使用 try-catch 块来处理异常。例如,下面的示例展示了如何处理一个异步生成器函数的异常:

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

在上面的示例中,我们调用了一个异步生成器函数 asyncGenerator(),并在 for await...of 循环中处理它的每个元素。在循环中,我们捕获了可能出现的异常,并使用 console.error() 方法来将异常打印出来。

结论

总体来说,for await...of 循环是处理异步迭代器的一种非常方便的方式。它可以用于遍历异步可迭代对象,同时处理多个异步操作,并处理异常错误。通过本文所述的示例,您可以掌握它的使用方法,并开始处理复杂的异步代码。

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

纠错
反馈