readable.iterator([options])
-
options<Object>-
destroyOnReturn<boolean> 当设置为false时,在异步迭代器上调用return或使用break、return或throw退出for await...of迭代不会销毁流。默认值:true。¥
destroyOnReturn<boolean> When set tofalse, callingreturnon the async iterator, or exiting afor await...ofiteration using abreak,return, orthrowwill not destroy the stream. Default:true.
-
-
返回:<AsyncIterator> 来消费流。
¥Returns: <AsyncIterator> to consume the stream.
如果 return、break 或 throw 退出 for await...of 循环,或者如果迭代器在迭代期间流触发错误时应销毁流,则此方法创建的迭代器为用户提供了取消流销毁的选项。
¥The iterator created by this method gives users the option to cancel the
destruction of the stream if the for await...of loop is exited by return,
break, or throw, or if the iterator should destroy the stream if the stream
emitted an error during iteration.
const { Readable } = require('node:stream');
async function printIterator(readable) {
for await (const chunk of readable.iterator({ destroyOnReturn: false })) {
console.log(chunk); // 1
break;
}
console.log(readable.destroyed); // false
for await (const chunk of readable.iterator({ destroyOnReturn: false })) {
console.log(chunk); // Will print 2 and then 3
}
console.log(readable.destroyed); // True, stream was totally consumed
}
async function printSymbolAsyncIterator(readable) {
for await (const chunk of readable) {
console.log(chunk); // 1
break;
}
console.log(readable.destroyed); // true
}
async function showBoth() {
await printIterator(Readable.from([1, 2, 3]));
await printSymbolAsyncIterator(Readable.from([1, 2, 3]));
}
showBoth();