Sails js:服务变量初始化

Sails js: service variable initialization

以下代码仅供参考。假设我的服务名称是 incremented 并且它具有 incrementCounter 功能

var counter = 0;
module.exports = {
    incrementCounter: function (req, callback) {
        counter++;
        callback(null, counter);
    }   
}

如您所见,var counter = 0 是在函数外部定义的,因此它可以在所有服务函数中全局访问。现在,如果我并行调用该服务两次,它会为第一次调用提供 1,这是正确的,但对于第二次调用,它会给我 2。变量 counter 不应该在调用服务时使用 0 重新初始化自身吗?

incremented.incrementCounter(req, function(error, response){
 //response = 1
});

incremented.incrementCounter(req, function(error, response){
 //response = 2
});

Sails 仅初始化一次服务:当您解除应用程序时。可以很容易地证明将 console.log('service inits') 或类似的东西放在服务的开头,并看到它只会执行一次。

Shouldn't the variable counter reinitialize itself with 0 when ever the service will be called?

没有。 require() in node 缓存模块,因此后续要求实际上并没有一遍又一遍地加载文件。这很容易测试,只需在您的服务顶部添加一个console.log('hi')

你真的不应该像这样定义全局变量曾经,所以这更像是一个一般的node.js编程问题,并不是真的sails.js相关。