以下是我的最小示例,我原本希望可写对象在readable.push(null);之后发出"Finish",但什么都没有发生.

import { Readable, Writable } from 'stream';

const readable = new Readable();

const writable = new Writable({
    write: (data) => {
        console.log('write', data.toString());
    }
});

writable.on('finish', () => {
    console.log('finish');
});

readable.pipe(writable);

readable.push('test');
readable.push(null);

输出:

write test

我还在writable和返回值.pipe()上分别try 了endclosecomplete,没有任何结果.

推荐答案

由于某种原因,解决这个问题的答案被作者删除了.

问题是,从未调用过writecallback参数:

import { Readable, Writable } from 'stream';

const readable = new Readable({
    read() {}
});

const writable = new Writable({
    write(chunk, encoding, callback) {
        console.log('write', chunk.toString());
        callback();
    }
});

writable.on('finish', () => {
    console.log('finish');
});

readable.pipe(writable);

readable.push('test');
readable.push(null);

输出:

write test
finish

Node.js相关问答推荐

容器端口是容器内 node 应用程序的端口吗?

如何更改ejs中的镜像src,以防从OMDB API获取的某些镜像具有src=N/A

DocuSign:调用createEntaine时,RequestJWTApplicationToken返回401 AUTHORIZATION_INVALID_TOKEN

自动将Selify打开的Chrome窗口移动到Mac OS中的第三个显示器

Firebase-admin筛选器.或只考虑第一个WHERE子句

NPM:无法导入本码模块

从MongoDB获取Tree数据

React原生Nodejs兼容性问题

使用 Google Drive API 按文件夹 ID 检索文件夹的内容

为什么 Cors 在 NodeJS 中不起作用

eSignature API 的 NodeJS SDK 是否支持数据流?

我如何保护nodejs中的路由

node Axios 创建全局令牌变量以在单独的变量头中使用

JAVASCRIPT:foreach 循环后的空数组

具有多个条件的mongoose 查找

使用 NodeJS 将新对象附加到 DynamoDB 中的 JSON 数组

npm 出现无法读取依赖项错误

从 zip 文件在 AWS 中创建 lambda 函数

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

在 Node.js 中混合使用 JavaScript 和 TypeScript