以下代码仅供参考。假设我的服务名称为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
});
答案 0 :(得分:2)
Sails仅初始化服务一次:当您解除应用程序时。可以很容易地证明在服务开始时添加console.log('service inits')
或类似内容,并确保它只执行一次。
答案 1 :(得分:1)
当调用服务时,变量计数器是否应该重新初始化为0?
没有。节点中的require()
缓存模块,因此后续要求实际上并不是一遍又一遍地加载文件。这很容易测试,只需在服务顶部添加console.log('hi')
即可。
你真的不应该像这个那样定义全局变量,所以这更像是一般的node.js编程问题,并不是真正的sails.js相关。