stream.finished(stream[, options])
stream<Stream> | <ReadableStream> | <WritableStream> 一个可读和/或可写的流/网络流。options<Object>error<boolean> | <undefined>readable<boolean> | <undefined>writable<boolean> | <undefined>signal<AbortSignal> | <undefined>cleanup<boolean> | <undefined> 如果为true,在 Promise 完成之前会移除此函数注册的监听器。默认值:false。
- 返回:<Promise> 当流不再可读或可写时完成。
const { finished } = require('node:stream/promises');
const fs = require('node:fs');
const rs = fs.createReadStream('archive.tar');
async function run() {
await finished(rs);
console.log('Stream is done reading.');
}
run().catch(console.error);
rs.resume(); // Drain the stream.import { finished } from 'node:stream/promises';
import { createReadStream } from 'node:fs';
const rs = createReadStream('archive.tar');
async function run() {
await finished(rs);
console.log('Stream is done reading.');
}
run().catch(console.error);
rs.resume(); // Drain the stream.finished API 也提供了一个 回调版本。
【The finished API also provides a callback version.】
stream.finished() 在返回的 Promise 被解决或拒绝后会留下悬空的事件监听器(特别是 'error'、'end'、'finish' 和 'close')。这样设计的原因是为了防止意外的 'error' 事件(由于流实现不正确)导致意外崩溃。如果不希望出现这种行为,应将 options.cleanup 设置为 true:
await finished(rs, { cleanup: true });