簡體   English   中英

對nodeJS中的每一行文件依次執行function

[英]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。

node.js:將文本文件讀入數組。 (每一行都是數組中的一個項目。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM