2016-10-13 9 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

を取る動作しないこと
関連する問題