为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2022-01-01 21:10:39
我希望你们都做得很好。我在 Node Js 中遇到了流问题,我想请求您的帮助:我正在阅读一个文件: const readStream = fs.createReadStream('./veryBigFile');我将输出通过管道发送到一个 POST 请求,如下所示:readStream.pipe(post_req);但是,我想在一定超时后停止读取文件,并停止 POST 请求。我尝试了 readStream.close() 和 readStream.destroy() 但它们不起作用(我将一个“结束”侦听器附加到 readStream,它在超时后不会被触发)。有任何想法吗 ?
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

在您对 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}`);

        }

    });


查看完整回答
反对 回复 2022-01-01
  • 1 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号