2017-08-23 9 views
0

以下のコードがあります。async.parallelがノードjsの非同期のように動作しない

var async = require( 'async');

async.parallel({ 

     f2: function(callback){ 
      for (var i=0;i< 100000000;i++){ 

      } 
      console.log("f2"); 
      callback(null,"function 2"); 
     }, 
     f1: function(callback){ 

      console.log("f1"); 
      callback(null,"function 1"); 
     }, 

    }, 
    function(err, results) { 
     console.log(results); 
    }); 

と私は上記の実行...

結果:

f2 
f1 
{ f2: 'function 2', f1: 'function 1' } 

なぜ最初の結果F2? なぜf1ではないですか? f1関数はf2関数以上の単純関数です。

私は思う。私は非同期にすることはできない。

私は使用のsetTimeout、proccess.NextTickなどをしたくない...

+0

'async'は非同期コードを管理するためのものです。あなたのコードは非同期ではありません。 – robertklep

+0

あなたのコードを適切にインデントしてください –

答えて

1

機能パラレル()は並行して、いないコードの並列実行についてのI/Oタスクオフを蹴っについてです。あなたのタスクがタイマーを使用せず、I/Oを実行しない場合、それらは実際には連続して実行されます。各タスクの同期セットアップセクションが順番に発生します。 JavaScriptはシングルスレッドのままです。参考:https://caolan.github.io/async/docs.html#parallel

+0

私はそうは思わない..彼らは同じ時間を開始しないでください。 –

+0

f2関数が終了する前に、f1関数のコンソールログが表示されません。 –

+0

前に間違った答えがありました。 – AlexBenoit

関連する問題