gpt4 book ai didi

javascript - Node.js 全局变量有时 = 1 有时 = 0,为什么?

转载 作者:行者123 更新时间:2023-12-03 02:39:08 27 4
gpt4 key购买 nike

问题:

我的网络应用程序正在 Google Cloud App Engine 上运行。当前有 2 个虚拟机实例正在为该 App Engine 网站运行。

奇怪的是,当调用特定事件时(每分钟大约 10 次),似乎特定全局变量有 2 个不同的实例。

我这样说是因为有时全局数组的长度为 0,有时为 1(实际上它没有改变)。

什么可能导致这种情况?

代码:

app.js

global.accountsArray = [];

文件1.js

global.accountsArray.push(account);

文件2.js

eventEmitter.on('event', function (body) {
console.log("EMITTER");
//sometimes prints out 1, sometimes prints out 0
console.log("Array length: "+global.accountsArray.length);
//
console.log("DESTINATION: "+body.block.destination);
//sometimes empty, sometimes not
console.log("ARRAY :"+global.accountsArray);
//
});

最佳答案

什么可能导致此情况?

变量accountsArray在内存中。对进程或虚拟机的任何重新启动都会重置该变量。考虑使用存储来实现弹性持久性,例如 redis 或 memcache。

编辑:

应该提到,另一个原因是因为变量存在于每个虚拟机的内存中,没有公共(public)存储,所以你会得到奇怪的结果。同样,这个问题可以通过使用两个虚拟机都可以使用的公共(public) session 存储来解决。

关于javascript - Node.js 全局变量有时 = 1 有时 = 0,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com