在 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