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相关。
以下代码仅供参考。假设我的服务名称是 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相关。