ES9 的新特性:for-await-of 语句

在 ES9 中,新增了一个非常实用的特性——for-await-of 语句,它可以让我们更加方便地处理异步迭代器的数据。

异步迭代器

在介绍 for-await-of 语句之前,先来了解一下异步迭代器。异步迭代器是一种可以异步返回多个值的迭代器,它的 next() 方法返回的是一个 Promise 对象,而不是一个具体的值。

举个例子,我们可以使用异步迭代器来处理一个异步生成器函数:

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

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

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

可以看到,使用异步迭代器处理异步生成器函数时,我们需要使用 Promise 的 then() 方法来获取每个值。

for-await-of 语句

为了更加方便地处理异步迭代器的数据,ES9 新增了 for-await-of 语句。它可以像 for-of 一样遍历异步迭代器中的每个值,但是它会自动等待 Promise 对象的 resolve(),然后返回 resolve() 的结果。

下面是一个使用 for-await-of 语句遍历异步迭代器的例子:

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

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

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

可以看到,使用 for-await-of 语句遍历异步迭代器时,我们可以直接获取每个 Promise 对象 resolve() 的结果。

指导意义

for-await-of 语句的出现,让我们在处理异步迭代器时更加方便,可以减少 Promise 的 then() 方法的使用,提高代码的可读性和可维护性。

同时,它也提醒我们在编写异步迭代器时,要注意每个值的返回时机,避免出现 Promise 对象未 resolve() 的情况。

总结

ES9 的 for-await-of 语句是一个非常实用的特性,它可以让我们更加方便地处理异步迭代器的数据。在编写异步迭代器时,要注意每个值的返回时机,避免出现 Promise 对象未 resolve() 的情况。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65e016261886fbafa4d4f1c5