當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。