假设我有一个异步生成器:
async function* generateItems() {
// ...
}
将所有结果迭代到数组中最简单的方法是什么?我尝试了以下方法:
// This does not work
const allItems = Array.from(generateItems());
// This works but is verbose
const allItems = [];
for await (const item of generateItems()) {
allItems.push(item);
}
(我知道这在生产应用程序中可能是不好的做法,但它对于原型设计很方便。)
4条答案
按热度按时间nhjlsmyf1#
这里有一个简单的函数,可以将异步迭代器转换为数组,而无需包含整个包。
axzmvihb2#
你的解决方案是我唯一知道的。下面是一个TypeScript函数:
TypeScript Playground
zazmityj3#
如果有人仍然在寻找解决方案,从ES22开始,您可以使用新的
Array.fromAsync()
静态方法。这将返回一个promise,其实现值是一个新的Array示例。
ES propsal的例子:
参考:MDN TC39
8ulbf1ek4#
看起来像
async-iterator-to-array
npm库这样做:安装
用途