繁体   English   中英

在节点 js 上调用 readStream.destroy() 读取 stream 不会停止读取

[英]Calling readStream.destroy() on a node js read stream doesn't stop the reading

我希望你们一切都好。

我在 Node Js 中遇到了流问题,我想寻求您的帮助:

我正在读取一个文件: const readStream = fs.createReadStream('./veryBigFile');

我 pipe 将 output 发送到这样的 POST 请求:

readStream.pipe(post_req);

但是,我想在某个超时后停止从文件中读取,并停止 POST 请求。

我尝试了 readStream.close() 和 readStream.destroy() 但它们不起作用(我在 readStream 上附加了一个“结束”侦听器,超时后它不会被触发)。

有任何想法吗?

在您发表评论 kirill Groshkov 之后,我决定再次查看我的代码,并且我了解如何使其工作!

在触发销毁事件后(使用 readStream.destroy()),它会发出一个“错误”事件,而不是我正在收听的“结束”事件。

所以我仍然不得不使用 readStream.destroy('YOUR CUSTOM ERROR MESSAGE') 在超时后停止读取文件。

然后我听了这个自定义错误:

        readStream.on('error', e => {
        if (e === 'YOUR CUSTOM ERROR MESSAGE') {
            post_req.abort(); //To cancel request
            // etc.
        } else {
            reject(`An error occured while uploading data: ${e}`);
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM