Node JS回调同步执行



我在节点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....") ;

由于回调本质上是异步的,我期望的执行顺序应该是Code continue,编号1-10000,然后处理回调

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

你写的代码不是异步的,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....") ;

但请记住,当调用Object方法时,这将不起作用

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

最新更新