节点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