作为对象参数

时间:2017-10-07 14:44:06

标签: javascript

我遇到了一个问题,我无法理解代码的执行顺序。我们说我有:

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"。

为什么会这样?

2 个答案:

答案 0 :(得分:3)

readFile是异步的。一旦读取文件,就会调用回调函数。

与此同时,foo的其余部分将完成运行。

答案 1 :(得分:0)

在读取文件后,

jsonfile.readFile使用console.log("3")语句执行回调函数。

console.log("4")语句异常jsonfile.readFile在程序启动读取文件后立即执行,而不是在读完文件后执行,如您所料。< / p>

这称为异步

JavaScript和Node.js中的许多功能都基于这个概念。

这是一个相关的问题,有关于如何处理异步函数调用的更多信息:

How do I return the response from an asynchronous call?