微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对nodeJS中的每一行文件依次执行函数

如何解决对nodeJS中的每一行文件依次执行函数

首先,我发现了类似的问题,但没有什么与我的用例完全匹配:

我有一个文件,例如:

line1prop1 line1prop2 line1prop3
line2prop1 line2prop2 line2prop3
line3prop1 line3prop2 line3prop3
...

我想逐行读取文件,为每一行执行一个函数,但等待该函数完成后再移动到下一行

这是因为对于每一行,我都必须提取属性并向 Elasticsearch 发出请求,以查看是否有匹配的文档,但我的集群被请求淹没,因为我目前正在异步读取所有内容

    var lineReader = require('readline').createInterface({
  input: require('fs').createReadStream('file.in')
});

lineReader.on('line',function (line) {
  //EXECUTE FUNCTION HERE AND WAIT FOR IT TO FINISH
});

非常感谢任何帮助!

解决方法

您需要了解当您使用 .on 侦听器时,您正在侦听发出的事件

'line' 事件在输入流接收到 行尾输入(\n、\r 或 \r\n)。这通常发生在用户 按 Enter 或 Return。

使用包含单个字符串的字符串调用侦听器函数 接收到的输入行。

由于它是一个侦听器,因此您无法控制事件的发出方式。

line.pause() 在这里也不起作用,因为以下原因

调用 rl.pause() 不会立即暂停其他事件(包括 'line') 从 readline.Interface 实例发出。

如果您愿意,您可能应该将整个文件读入一个 javascript 数组,并使用 for loops 遍历每一行。

node.js: read a text file into an array. (Each line an item in the array.)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。