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循环
遍历每一行
该文件有数百万行,因此无法将其加载到内存中。