我有一个大文件,需要逐行读取和处理。
由于它非常大,我无法将其读取到内存中,然后只能对其进行处理。
因此,我使用readline
模块,该模块允许一一读取行。
我面临的问题是该模块仅支持异步读取。
但是,我需要处理每一行,并且仅在完成后才基于该结果返回结果。
我想到的唯一解决方案是忙碌:
const fs = require("fs");
const readline = require("readline");
const stream = fs.createReadStream("file.txt");
stream.on("error", err => console.log("Error: " + err));
const reader = readline.createInterface({input: stream});
let retVal = null;
reader.on("line", function(line) {
// Process each line
}).on("close", function() {
retVal = ... // Create an object based on the processed lines
});
while (retVal == null);
return retVal;
但是我觉得此解决方案非常“丑陋”,node-js基础结构必须支持更好的方法。
任何想法都会非常感激。
谢谢!