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 - 将函数结果分配给变量与调用内联有什么好处?

javascript - Nodejs对方法或 promise 的回调?

node.js - 如何使用 AWS.SNS.publish 更改 SMS 类型

javascript - 可以让 Jasmine 测试并发故障吗?

javascript - setInterval与chrome和firefox不同

javascript - setTimeout的替代图像

javascript - 通过屏幕分辨率更改在线最小高度

javascript - 在循环中处理多个请求会导致同步问题

javascript - 如何使用 jquery ajax 将 css 样式添加到动态加载的代码段

node.js - 限制 CPU NODE.JS 操作以允许处理新调用