如何关闭readable stream英寸的 node .js?

var input = fs.createReadStream('lines.txt');

input.on('data', function(data) {
   // after closing the stream, this will not
   // be called again

   if (gotFirstLine) {
      // close this stream and continue the
      // instructions from this if
      console.log("Closed.");
   }
});

这比:

input.on('data', function(data) {
   if (isEnded) { return; }

   if (gotFirstLine) {
      isEnded = true;
      console.log("Closed.");
   }
});

但这并不能阻止阅读过程...

推荐答案

调用input.close().文件里没有,但是

https://github.com/joyent/node/blob/cfcb1de130867197cbc9c6012b7e84e08e53d032/lib/fs.js#L1597-L1620

很明显,它确实起到了作用:)它实际上起到了类似于isEnded的作用.

EDIT 2015-Apr-19基于以下 comments ,并澄清和更新:

  • 这个建议是黑客攻击,没有记录在案.
  • Though for looking at the current lib/fs.js it still works >1.5yrs later.
  • 我同意下面的 comments ,打destroy()是更好的 Select .
  • 如下文正确所述,这适用于fs ReadStreams,而不是通用Readable

至于一个通用的解决方案:至少从我对文档的理解和快速查看_stream_readable.js个方面来看,似乎没有.

我的建议是将可读流置于paused模式,至少防止在upstream 数据源中进行进一步处理.不要忘记删除unpipe()并删除所有data个事件侦听器,这样pause()就会真正暂停,如the docs中所述

Node.js相关问答推荐

如何在Node.js 应用程序中从react js公共目录渲染图像?

如何在node.js中以随机顺序调用函数并按顺序操作

带有apache Couch-db和Nano的推荐引擎:过滤特定用户的视图

FireStore事务似乎已允许并发编辑?

将 POST 的 json 变量格式化为 lambda

密码加密的最佳实践是什么?

在父模式中设置默认值.

Solidity 将数据位置从内存更改为存储

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

为什么这个 module.export 函数如果我直接传递它就不起作用,但如果我将它包装在一个匿名函数中就可以工作

如何使用对象中的常量值验证字符串字段?

带有事件网格的 Azure 函数在没有 ngrok 的情况下在本地运行

NodeJS 后端发布请求将数据作为NULL值发布到 SQL Server 表

Node.js 大文件上传到 MongoDB 阻塞了事件循环和工作池

Azure Function 在 2022 年 4 月 26 日禁用将用户字段设置为 HTTP 请求对象

node.js 中 res.setHeader 和 res.header 的区别

如何在 Nest.js 中使用查询参数?

什么使用/尊重 .node-version 文件?

MongoDB Node findone如何处理没有结果?

FireStore 如果不存在则创建一个文档