我会发表评论,但没有足够的声誉。
警告:如果您的应用程序正在传递流并执行异步/等待,请在等待之前非常小心地连接所有管道。您最终可能会得到不包含您认为它们所做的事情的流。这是最小的例子
const { PassThrough } = require('stream');
async function main() {
    const initialStream = new PassThrough();
    const otherStream = new PassThrough();
    const data = [];
    otherStream.on('data', dat => data.push(dat));
    const resultOtherStreamPromise = new Promise(resolve => otherStream.on('end', () => { resolve(Buffer.concat(data)) }));
    const yetAnotherStream = new PassThrough();
    const data2 = [];
    yetAnotherStream.on('data', dat => data2.push(dat));
    const resultYetAnotherStreamPromise = new Promise(resolve => yetAnotherStream.on('end', () => { resolve(Buffer.concat(data2)) }));
    initialStream.pipe(otherStream);
    initialStream.write('some ');
    await Promise.resolve(); // Completely unrelated await
    initialStream.pipe(yetAnotherStream);
    initialStream.end('data');
    const [resultOtherStream, resultYetAnotherStream] = await Promise.all([
        resultOtherStreamPromise,
        resultYetAnotherStreamPromise,
    ]);
    console.log('other stream:', resultOtherStream.toString()); // other stream: some data
    console.log('yet another stream:', resultYetAnotherStream.toString()); // yet another stream: data
}
main();