我遇到了一个问题,我无法理解代码的执行顺序。我们说我有:
console.log("0");
foo();
console.log("1");
function foo(){
console.log("2");
jsonfile.readFile('test.json', function(err, obj){
console.log("3");
});
console.log("4");
}
上述程序的输出是" 0 2 4 1 3"当我期待" 0 2 3 4 1"。
为什么会这样?
答案 0 :(得分:3)
readFile
是异步的。一旦读取文件,就会调用回调函数。
与此同时,foo
的其余部分将完成运行。
答案 1 :(得分:0)
jsonfile.readFile
使用console.log("3")
语句执行回调函数。
console.log("4")
语句异常jsonfile.readFile
在程序启动读取文件后立即执行,而不是在读完文件后执行,如您所料。< / p>
这称为异步。
JavaScript和Node.js中的许多功能都基于这个概念。
这是一个相关的问题,有关于如何处理异步函数调用的更多信息: