我是nodejs的新手。我已经实现了简单的异步任务,它应该每10分钟运行一次。这里设置Interval函数应该每隔x分钟运行一次,并且应该更新变量api key的值。我不知道它里面缺少什么。
任何人都可以让我知道我哪里出错了。
var csgTokenFile= rfr('models/csg-token-gen');
var apiKey;
setInterval(function(req, res) {
csgTokenFile.key(function(messages) {
console.log("key: ",messages);
apiKey = messages;
})
}, 20000);
答案 0 :(得分:0)
您的代码存在一些问题,修复后可以帮助您找到真正的问题 - 在csgTokenFile.key()
函数,调用或预期行为中。
首先,传递给setInterval()
的函数中的参数没有任何意义,因为无论如何它都将被调用而没有参数。你还没有在这里使用它们,但它们的存在并不是一个好兆头,因为你似乎对它的运作方式感到困惑。
而不是:
setInterval(function (req, res) {
// ...
}, 20000);
使用它:
setInterval(function () {
// ...
}, 20000);
或者这个,因为你还没有使用this
:
setInterval(() => {
// ...
}, 20000);
现在,函数csgTokenFile.key()
的接口和实现仍然是个谜(这是问题中最重要的问题来源,因为它是功能不能正常工作或者是其他代码没有正确使用该功能 - 如果不查看csgTokenFile.key()
的源代码也无法判断 - rfr()
函数是一个谜,可能与此相关)但它看起来可能是遵循错误优先回调的Node约定,在这种情况下,它会将错误作为回调的第一个参数传递,将实际数据传递给第二个参数。
如果csgTokenFile.key()
采用传统的Node风格回调,那么它应该像这样使用:
setInterval(() => {
csgTokenFile.key((error, messages) => {
if (error) {
return console.log('Error:', error);
}
console.log("key: ", messages);
apiKey = messages;
})
}, 20000);
但如上所述,从你的问题中无法判断。这只是一个暗示。