节点代码保持序列而不是异步执行

时间:2017-01-26 22:00:04

标签: node.js

有人可以解释为什么这段代码是按顺序执行的吗?

console.log('Main code, first line');
doThings(10000000, doThingsAfter);

function doThings(x,callback){
    console.log('Am in doThings(x,callback), value received is ' + x);
    for (var i= 0; i<x; i++){var minutes = new Date().getMinutes();} //wasting time here
    console.log('Time after '+ x +' times was ' + minutes);
    callback(minutes);
}

function doThingsAfter(minutes){
    console.log('I am at doThingsAfter(), so I am the callback and I received minute:' + minutes);
}
console.log('Main code, last line');

结果是:

  • 主要代码,第一行
  • 在doThings(x,回调)中,收到的值是10000000
  • 10000000次后的时间为38
  • 我在doThingsAfter(),所以我是回调,我收到了分钟:38
  • 主要代码,最后一行

我希望

  • 主要代码,第一行
  • 主要代码,最后一行
  • 在doThings(x,回调)中,收到的值是10000000
  • 10000000次后的时间为38
  • 我在doThingsAfter(),所以我是回调,我收到了分钟:38

或至少

  • 主要代码,第一行
  • 在doThings(x,回调)中,收到的值是10000000
  • 主要代码,最后一行
  • 10000000次后的时间为38
  • 我在doThingsAfter(),所以我是回调,我收到分钟:38

事情是最后console.log('Main code, last line');不应该等到循环结束。我做错了什么?

谢谢!

0 个答案:

没有答案