2014-06-11 135 views
0

我正在努力掌握node.js的流量控制。 在我的代码中,我定义了一个函数,它包含一个递归函数。我想调用这个“main”函数,等待它完成并console.log结果。问题是node.js的非阻塞方式。如何设置回调以确保输出正确?node.js等待回调

在下面的代码中输出将是空的,我该如何改变?据我所知,我必须设定一个回调,但迄今为止我所做的所有努力都没有用。

var main = function(){ 

    var list=[1,2,3,4]; 
    var value=[]; 

    function twotimes(i){ 
     if (i<list.length){ 
      var j=i*2; 
      value[i]=j; 
      twotimes(i+1); //recursive call of "twotimes" 
     } 
    } 
    twotimes(0); //initiate the function 
} 

main(function(err){ 
console.log(value); 
}); 

回答

1

试试这个:

var main = function(callback){ 
    var list=[1,2,3,4]; 
    var value=[]; 
    function twotimes(i){ 
     if (i<list.length){ 
      var j=i*2; 
      value[i]=j; 
      twotimes(i+1); //recursive call of "twotimes" 
     } 
    } 
    twotimes(0); //initiate the function 
    callback(value) 
} 

main(function(value){ 
    console.log(value); 
});