Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为nodeJS中的每一行文件顺序执行函数_Javascript_Node.js_File_Wait_Sequential - Fatal编程技术网

Javascript 为nodeJS中的每一行文件顺序执行函数

Javascript 为nodeJS中的每一行文件顺序执行函数,javascript,node.js,file,wait,sequential,Javascript,Node.js,File,Wait,Sequential,首先,我发现了类似的问题,但与我的用例并不完全匹配: 我有一个文件,例如: line1prop1 line1prop2 line1prop3 line2prop1 line2prop2 line2prop3 line3prop1 line3prop2 line3prop3 ... 我想逐行读取文件,对每行执行一个函数,但要等到函数完成后再移到下一行 这是因为对于每一行,我都必须提取属性并向Elasticsearch发出请求,以查看是否有匹配的文档,但我的集群会被请求淹没,因为我当前异步读取所有

首先,我发现了类似的问题,但与我的用例并不完全匹配:

我有一个文件,例如:

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

非常感谢您的帮助

使用
时,您需要了解。在
侦听器上,您正在侦听发出的事件

每当输入流接收到 行结束输入(\n、\r或\r\n)。这通常发生在用户 按Enter或Return

listener函数是使用包含单个 接收到的输入行

由于它是侦听器,所以无法控制事件的发出方式

line.pause()在此处也不起作用,原因如下

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

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


该文件有数百万行,因此无法将其加载到内存中。