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



我希望你们都做得很好。

我在Node Js中面临流的问题,我想寻求您的帮助:

我正在读取一个文件,其中包含:const readStream=fs.createReadStream('./veryBigFile'(;

然后我通过管道将输出发送到POST请求,如下所示:

readStream.pipe(post_req(;

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

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

有什么想法吗?

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

destroy事件(使用readStream.dedestroy(((被长篇化后,它是一个"错误"事件,而不是我正在听的"结束"事件。

所以我仍然必须使用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}`);
}
});

最新更新