当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js stream.Readable.forEach(fn[, options])用法及代码示例


readable.forEach(fn[, options])

添加于:v17.5.0
Stability: 1 - 实验性

参数

此方法允许迭代流。对于流中的每个块,将调用fn 函数。如果fn 函数返回一个promise - 该promise 将是await ed。

此方法与for await...of 循环的不同之处在于它可以选择性地同时处理块。此外,forEach 迭代只能通过传递 signal 选项并中止相关的 AbortController 来停止,而 for await...of 可以通过 breakreturn 停止。在任何一种情况下,流都将被销毁。

该方法与监听 'data' 事件的不同之处在于它在底层机器中使用了 readable 事件,并且可以限制并发fn调用的数量。

import { Readable } from 'node:stream';
import { Resolver } from 'node:dns/promises';

// With a synchronous predicate.
for await (const chunk of Readable.from([1, 2, 3, 4]).filter((x) => x > 2)) {
  console.log(chunk); // 3, 4
}
// With an asynchronous predicate, making at most 2 queries at a time.
const resolver = new Resolver();
const dnsResults = Readable.from([
  'nodejs.org',
  'openjsf.org',
  'www.linuxfoundation.org',
]).map(async (domain) => {
  const { address } = await resolver.resolve4(domain, { ttl: true });
  return address;
}, { concurrency: 2 });
await dnsResults.forEach((result) => {
  // Logs result, similar to `for await (const result of dnsResults)`
  console.log(result);
});
console.log('done'); // Stream has finished

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 stream.Readable.forEach(fn[, options])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。