读取和写入process.env值是同步的吗?
在nodejs中读取和写入环境variables是使用process.env
对象完成的。
例如:
-
process.env.foo
评估为env varfoo
-
process.env.bar = 'blah'
将env varbar
的值设置为等值 -
delete process.env.baz
删除环境variablesbaz
从试错看,缺乏callback,我认为这些行动是同步的,但我没有在文档中find它的参考。
在nodejs中env var access是同步的还是asynchronous的?
附录:为什么我认为这个问题是不平凡的
遵循以下注释:读取和写入环境variables可能意味着进程需要与操作系统进行通信,或执行某种阻塞I / O操作。
因此,询问环境variables是否作为本地对象存储在内存中而没有任何同步,或者以阻塞的方式发送到操作系统是有意义的。
此外,操作系统的实现可能会有所不同,官方文档对于非阻塞操作没有任何承诺。
是的,它是同步的。
你只是设置和获取一个普通对象的值。
其实这是一个正常的对象,使得你可以获得当前进程的环境variables,毕竟它们只是一些variables,用于对程序进行一些设置。 在nodejs程序读取它们之后,Nodejs为它们设置一个正常的对象。 虽然文档不写,但它写这是一个对象和以下的东西:
可以修改这个对象,但这样的修改不会反映在Node.js过程之外。 换句话说,下面的例子不起作用:
$ node -e 'process.env.foo = "bar"' && echo $foo
虽然以下将会:
process.env.foo = 'bar'; console.log(process.env.foo);
在process.env上分配一个属性会隐式地将值转换为一个string。
这足以解释你的问题。