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

我希望你们都做得很好。

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

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

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

readStream.pipe(post_req);

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

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

有任何想法吗 ?


ITMISS
浏览 220回答 1
1回答

慕桂英4014372

在您对 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}`);        }    });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript