变量赋值在nodejs中是否同步?

时间:2016-05-11 01:22:55

标签: node.js

说我们有

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

我们怎么知道它不会打印未定义的变量z?

  • 如果它是异步的,是否有一个函数用于通过回调为变量赋值,因此我们可以在使用它们时确定它们的值。
  • 如果是同步的,那么在加载
等模块时
var express = require('express');

当你在一个脚本中加载其中一些时,这不是很慢吗?

1 个答案:

答案 0 :(得分:7)

  

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);
}