节点JScallback在同步执行

我在节点js中有这个代码

var PrintFirstName = function(first_name , cb) { cb("First name is "+first_name) ; } PrintFirstName("Tushar" , function(res){ for(var i = 0 ; i < 100000; i++) { console.log(i); } console.log("processing callback"); }); console.log("Code continue....") ; 

由于callback本质上是asynchronous的,我预期的执行顺序应该是代码继续,数字1-10000,然后处理callback

但是,如果我运行上面我得到输出为数字1-10000,处理callback,然后代码继续。 代码继续应该先执行。为什么它正在等待callback完成。

您编写的代码不是asynchronous的,通常javascript中的asynchronous函数需要手动构buildsetTimeout或setInterval的expression式参数。

在你的情况下:

 var PrintFirstName = function(first_name , cb) { cb("First name is "+first_name) ; } PrintFirstName("Tushar" , function(res){ for(var i = 0 ; i < 100000; i++) { console.log(i); } setTimeout(function() { console.log("processing callback");}, 0); }); console.log("Code continue....") ; 

但请记住,在对Object方法进行调用时这不起作用

看看这里http://devedge.primedirective.net/toolbox/examples/2003/CCallWrapper/index.html