2016-10-13 76 views
1

我在节点JS执行的节点JS回调sychronously

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....") ; 

由于回调在本质上是异步的,我预期执行的顺序应该是码继续,数字1-10000这个代码,然后处理回调

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

回答

1

您编写的代码不是异步的,通常javascript中的异步函数需要手动为setTimeout或setInterval构造表达式参数。

你的情况:

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....") ; 

但是请记住,制造上的对象方法的调用时,这是不行的

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