javascript - 如何同步执行函数以获得正确的输出

标签 javascript node.js settimeout synchronous

我正在制作一个读取文件并逐行提取数据的应用程序。然后将每一行存储为一个数组元素,并且需要该数组作为最终输出。

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/

相关文章:

javascript - 有没有办法让函数停止执行,直到 setTimeout() 时间结束

javascript - 为什么用于 AES 加密的 Googles Javascript 代码在此代码中不起作用?

javascript - react native : Can't see changes to my code

node.js - 蒙古语或蒙古语 native 不支持群组功能?

node.js - URL 格式错误,无法解析

javascript - 使用 JavaScript 和 HTML5 Canvas 显示绘图过程

javascript - 中断JQuery setTimeout函数

javascript - If() block 更改接收到的 Meteor 数据

javascript - JavaScript 中的 i++ 和++i 之间有性能差异吗?

javascript - 如何从其他地方访问项目的 babel 相关 deps?