readable.iterator([options])
¥Stability: 1 - Experimental
-
options
<Object>-
destroyOnReturn
<boolean> 当设置为false
时,在异步迭代器上调用return
或使用break
、return
或throw
退出for await...of
迭代不会销毁流。默认值:true
。¥
destroyOnReturn
<boolean> When set tofalse
, callingreturn
on the async iterator, or exiting afor await...of
iteration using abreak
,return
, orthrow
will not destroy the stream. Default:true
. -
destroyOnError
<boolean> 当设置为false
时,如果流在迭代时触发错误,迭代器将不会销毁流。默认值:true
。¥
destroyOnError
<boolean> When set tofalse
, if the stream emits an error while it's being iterated, the iterator will 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();