我正在制作一个读取文件并逐行提取数据的应用程序。然后将每一行存储为一个数组元素,并且需要该数组作为最终输出。
const fs = require('fs');
const readline = require('readline');
var output_array=[];
const readInterface = readline.createInterface({
input: fs.createReadStream(inp_file),
console: false
});
readInterface.on('line', function(line) {
//code for pushing lines into output_array after doing conditional formatting
}
callback (null, output_array);
有了这个,我得到一个空数组。虽然如果我使用'setTimeout'那么它工作正常
setTimeout(() => {
callback (null, output_array);
}, 2000);
如何在不使用“setTimeout”的情况下同步执行?
最佳答案
您不能同步执行异步函数。但是readline
支持close
事件,当输入文件被完全读取时触发,所以你可以在那里调用回调。
readInterface.on('close', () => {
callback(null, output_array);
});
关于javascript - 如何同步执行函数以获得正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63632595/