【问题标题】:Non-global variables everytime I call a module每次调用模块时的非全局变量
【发布时间】:2018-01-18 03:40:32
【问题描述】:

这些变量在 module.exports 文件中,当我多次调用该模块时,每个实例共享这些值。我不希望他们共享值,每次调用模块时,我希望每个调用都有自己的循环数,原始,newprod 等。就像多线程一样。

我在 Mac 上使用 NodeJS

cycle = 0; var original = []; var newprod = []; var proxylist = [];

新编辑 -----

我在调用时添加了一个new 构造函数,但它不起作用。不确定他们仍在共享变量的问题是什么。这是我的代码。

config.sites.forEach(函数(站点){ var mod = 要求(./src/monitor).init, mod1 = 新模组(网站); });

【问题讨论】:

  • 你不能让你的模块导出一个函数吗?
  • 我做了,但我试图使函数中的变量对每个调用都是唯一的。
  • 一个模块没有被调用,它被加载了。一次 - 只有一个模块。如果你想调用一些东西,把代码放在一个函数中。

标签: javascript arrays node.js multithreading variables


【解决方案1】:

如果您需要防止覆盖变量,您应该limit them to a specific scope。作用域可以是函数或类。

对于您的情况,您可以创建一个类来维护每个实例中隔离的变量,然后创建用于更新其值的方法。 Here's an example I found

另外,从 es2015 you can create classes 开始,就像大多数语言一样。

【讨论】:

  • 谢谢,我确实将它们限制在一个范围(函数)内。但我多次调用该函数。
  • 我明白了,但您是否尝试在每次调用时保存结果? var a = something() 然后使用我放置的链接中的方法访问: var originalA = a.getOriginal() ?
猜你喜欢
  • 2012-10-26
  • 2016-02-10
  • 2015-03-07
  • 2014-07-06
  • 2016-10-20
  • 2016-09-15
  • 2018-11-21
  • 1970-01-01
  • 2013-07-19
相关资源
最近更新 更多