本文摘自PHP中文网,作者青灯夜游,侵删。
本篇文章带大家了解一下Node.js中的异步迭代器。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。从 10.0.0 版开始,异步迭代器就出现在 Node 中了,在本文中,我们将讨论异步迭代器的作用,以及它们可以用在什么地方。
什么是异步迭代器
异步迭代器实际上是以前迭代器的异步版本。当我们不知道迭代的值和最终状态时,可以使用异步迭代器。两者不同的地方在于,我们得到的 promise 最终将被分解为普通的 { value: any, done: boolean }
对象,另外可以通过 for-await-of
循环来处理异步迭代器。就像 for-of
循环用于同步迭代器一样。【相关推荐:《nodejs 教程》】
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
与通常的 for-of
循环相反,`for-await-of
循环将会等待它收到的每个 promise 解析之后再继续执行下一个。
除了流之外,还在还没有什么能够支持异步迭代的结构,但是可以将 asyncIterator
符号手动添加到任何一种可迭代的结构中。
在流上使用异步迭代器
异步迭代器在处理流时非常有用。可读流、可写流、双工流和转换流上都带有 asyncIterator
符号。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
如果以这种方式写代码,就不需要在通过迭代获取每个数据块时监听 end
和 data
事件了,并且 for-await-of
循环会随着流的结束而结束。
用于有分页功能的 API
你还可以通过异步迭代从使用分页的源中轻松获取数据。为了实现这个功能,还需要一种从Node https 请求方法提供给的流中重构响应主体的方法。在这里也可以使用异步迭代器,因为 https 请求和响应在 Node 中都是流:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
代码通过向 Cat API(https://thecatapi.com/)发出请求,来获取一些猫的图片。另外还添加了 7 秒钟的延迟防止对 cat API 的访问过与频繁,因为那样是极其不道德的。
相关阅读 >>
如何使用ppa在ubuntu上安装最新的node.js和npm
js中object.defineproperty的用法介绍(代码示例)
更多相关阅读请进入《node.js》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者