2016-05-11 3 views
0

は、我々はそれが未定義の変数zを印刷しないことを知っているにはどうすればよいnodejに変数の割り当てが同期していますか?

var x =3; 
var y = 4; 
var z = x*y; 
console.log(z); 

を持って言いますか?

  • 非同期の場合、コールバックを使用して変数に値を代入するための関数があります。そのため、コールバックを使用する際にその値を特定できるようになりました。
  • それが同期している場合は、ひとつのスクリプトでそれらのいくつかをロードするとき、その後、
var express = require('express'); 

のようなロードモジュールは、それはかなり遅くなることはないでしょうか?

+1

[JavaScript関数は非同期ですか?](http://stackoverflow.com/questions/15141118/are) -javascript-functions-asynchronous)を使用します。このスレッドは、あなたが持っているすべての質問をクリアする必要があります。 –

+0

だからnodejsは普通のjavascriptですか?私はそれが非同期的に実行されているということを全部考えていました。それでも、1つのスクリプトで複数のrequireを読み込むのが遅いかどうかという私の質問には答えません。 – SirKaliKook

+0

http://ruben.verborgh.org/blog/2012/08/13/javascript-module-loaders-necessary-evil/ –

答えて

5

nodejsで変数の割り当てが同期していますか?

はい、あります。

実際には、一連のステートメントは同期して実行されます。

あなたは状況の次のタイプと混同取得することができる。それはまだ知られていないので、ここで

var x = LongRunningAsyncTask(); 
console.log(x); 

LongRunningAsyncTaskは、その結果を返すことができません。したがって、xはおそらくLongRunningAsyncTaskがコールバックスタイルで実装されていると仮定すると、理由である、あなたが望むものではありません、あなたは

LongRunningAsyncTask(function callback(x) { 
    console.log(x); 
}); 

または場合LongRunningAsyncTaskを記述する必要が約束を返し、その後、

LongRunningAsyncTask() . then(x => console.log(x)); 

async function foo() { 
    var x = await LongRunningAsyncTask(); 
    console.log(x); 
} 
関連する問題