我有一个类似这样的异步迭代器:
async function* getLines() {
for (let index = 0; index < 10; index++) {
const response = await fetch('/resource/' + index);
const data = await response.text();
yield data;
}
}
我能够使用 for await
来消费它:
let source = '';
for await (const line of getLines()) {
console.log('line');
source += line + '\n';
}
return source;
但我想知道是否有一种方法可以使用类似于Array.from
或[...]
的东西来实现从异步迭代器中连接项目以形成字符串的相同效果。
Array.from(await getLines())
和[...getLines()]
本身并没有意义,因为生成器本身不会被单个项目等待,就像在 for await
结构中一样。是否有像Array.fromAwait(getLines())
这样的东西,还是我必须自己编写像在使用for await
示例中那样的代码?
Readable.from
吗?我不太确定该如何使用它。 - Tomáš HübelbauerReadable.from
将异步迭代器转换为 Node.js 流,您可以对其进行转换并利用流本身是异步可迭代的事实来获取异步迭代器。请参见 https://nodejs.org/api/stream.html#stream_stream_readable_from_iterable_options - Benjamin Gruenbaumreduce
方法?我可能在这里漏掉了什么。 - Bergi