异步读取文件,但读取完成后同步返回结果

时间:2018-06-30 08:46:13

标签: javascript node.js file asynchronous stream

我有一个大文件,需要逐行读取和处理。

由于它非常大,我无法将其读取到内存中,然后只能对其进行处理。

因此,我使用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基础结构必须支持更好的方法。

任何想法都会非常感激。

谢谢!

0 个答案:

没有答案