前言
在 JavaScript 语言中,for 循环是非常常见的一种语法结构。在 ES6 中,引入了 for-of 循环,可以方便地遍历数组和类数组对象。但是在处理异步任务时,for-of 循环并不能直接处理异步迭代器返回的 Promise 对象。ES9 中引入了 for-await-of 循环,可以方便地遍历异步迭代器返回的 Promise 对象。
理解 for-await-of 循环
for-await-of 循环是 for-of 循环的异步版本。for-await-of 循环可以遍历异步迭代器返回的 Promise 对象。在遍历时,如果 Promise 对象是 pending 状态,for-await-of 循环会暂停遍历,直到 Promise 对象变为 resolved 状态。for-await-of 循环遍历的是异步迭代器的值,而不是 Promise 对象本身。
for-await-of 循环的语法结构如下:
for await (let value of asyncIterable) { // 处理异步任务 }
其中,asyncIterable 是一个异步迭代器,value 是异步迭代器返回的 Promise 对象的 resolved 值。
应用 for-await-of 循环
for-await-of 循环可以方便地处理异步任务。下面是一个使用 for-await-of 循环遍历异步迭代器的示例代码:
-- -------------------- ---- ------- ----- -------- ----------- - ----- ------------- - - ------------------------ - --- - - -- ------ - ----- ------ - ----- --- --------------- -- ------------------- ------- -- -- - -- - ------ - ------ ---- ----- ----- -- - ------ - ------ ---------- ----- ---- -- -- -- -- -- --- ----- ---- ----- -- -------------- - ------------------- - - ------------
在上面的示例代码中,asyncIterable 是一个异步迭代器,它返回一个 Promise 对象。for-await-of 循环遍历 asyncIterable 返回的 Promise 对象的 resolved 值。在每次遍历时,会等待 1 秒钟,然后输出迭代器的值。
总结
for-await-of 循环是 ES9 中新增的语法结构,可以方便地处理异步任务。for-await-of 循环可以遍历异步迭代器返回的 Promise 对象。在遍历时,如果 Promise 对象是 pending 状态,for-await-of 循环会暂停遍历,直到 Promise 对象变为 resolved 状态。for-await-of 循环遍历的是异步迭代器的值,而不是 Promise 对象本身。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65681019d2f5e1655d0d72f0