readable.forEach(fn[, options])
添加於:v17.5.0
Stability: 1 - 實驗性
參數
fn
<Function>|<AsyncFunction>調用流的每個塊的函數。data
<any> 來自流的數據塊。options
<Object>signal
<AbortSignal> 如果流被破壞則中止,允許提前中止fn
調用。
options
<Object>concurrency
<number>fn
的最大並發調用一次調用流。 默認:1
。signal
<AbortSignal> 允許在信號中止時銷毀流。
- 返回: <Promise> 流完成時的承諾。
此方法允許迭代流。對於流中的每個塊,將調用fn
函數。如果fn
函數返回一個promise - 該promise 將是await
ed。
此方法與for await...of
循環的不同之處在於它可以選擇性地同時處理塊。此外,forEach
迭代隻能通過傳遞 signal
選項並中止相關的 AbortController
來停止,而 for await...of
可以通過 break
或 return
停止。在任何一種情況下,流都將被銷毀。
該方法與監聽
事件的不同之處在於它在底層機器中使用了'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
相關用法
- Node.js stream.Readable.from()用法及代碼示例
- Node.js stream.Readable.flatMap(fn[, options])用法及代碼示例
- Node.js stream.Readable.filter(fn[, options])用法及代碼示例
- Node.js stream.Readable.find(fn[, options])用法及代碼示例
- Node.js stream.Readable.from(iterable[, options])用法及代碼示例
- Node.js stream.Readable.take(limit[, options])用法及代碼示例
- Node.js stream.Readable.pipe(destination[, options])用法及代碼示例
- Node.js stream.Readable.setEncoding(encoding)用法及代碼示例
- Node.js stream.Readable.some(fn[, options])用法及代碼示例
- Node.js stream.Readable.map(fn[, options])用法及代碼示例
- Node.js stream.Readable.toArray([options])用法及代碼示例
- Node.js stream.Readable.isPaused()用法及代碼示例
- Node.js stream.Readable.every(fn[, options])用法及代碼示例
- Node.js stream.Readable.read([size])用法及代碼示例
- Node.js stream.Readable.unshift(chunk[, encoding])用法及代碼示例
- Node.js stream.Readable.asIndexedPairs([options])用法及代碼示例
- Node.js stream.Readable.drop(limit[, options])用法及代碼示例
- Node.js stream.Readable.resume()用法及代碼示例
- Node.js stream.Readable.reduce(fn[, initial[, options]])用法及代碼示例
- Node.js stream.Readable.iterator([options])用法及代碼示例
- Node.js stream.Readable.wrap(stream)用法及代碼示例
- Node.js stream.Readable.unpipe([destination])用法及代碼示例
- Node.js stream.Readable.pause()用法及代碼示例
- Node.js stream.Writable.uncork()用法及代碼示例
- Node.js stream.finished()用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 stream.Readable.forEach(fn[, options])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。