[英]Execute function sequentially for each line of file in nodeJS
首先,我發現了類似的問題,但沒有什么完全符合我的用例:
我有一個文件,例如:
line1prop1 line1prop2 line1prop3
line2prop1 line2prop2 line2prop3
line3prop1 line3prop2 line3prop3
...
我想逐行讀取文件,為每一行執行 function 但等待 function 完成,然后再移動到下一行
這是因為對於每一行,我必須提取屬性並向 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
偵聽器時,您正在偵聽發出的事件
每當輸入 stream 接收到行尾輸入(\n、\r 或 \r\n)時,就會發出 'line' 事件。 這通常發生在用戶按下 Enter 或 Return 時。
使用包含單行接收輸入的字符串調用偵聽器 function。
由於它是一個偵聽器,因此您無法控制事件的發出方式。
由於以下原因,line.pause() 在這里也不起作用
調用 rl.pause() 不會立即暫停 readline.Interface 實例發出的其他事件(包括“line”)。
如果您願意,您可能應該將整個文件讀入 javascript 數組,並通過每一行使用for loops
到 go。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.