2014-06-11 167 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); 
});