【问题标题】:Execute function sequentially for each line of file in nodeJS对nodeJS中的每一行文件按顺序执行函数
【发布时间】:2021-05-25 09:38:36
【问题描述】:

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

我有一个文件,例如:

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
});

非常感谢任何帮助!

【问题讨论】:

    标签: javascript node.js file wait sequential


    【解决方案1】:

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

    每当输入流接收到一个 行尾输入(\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.)

    【讨论】:

    • 该文件有数百万行,因此无法将其加载到内存中。
    猜你喜欢
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2020-06-06
    • 2011-07-29
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多