2 回答
TA贡献1812条经验 获得超5个赞
你是对的,你无法访问函数内的变量,因为它超出了范围。
设置一个等于函数外部范围的变量,并在函数内使用它,如下所示:
class Infos{
static TEN_SECS = 10000;
static cron = require('node-cron');
static codeMap = new Map();
static evictionRegisty = new Map();
var root = this;
constructor() {
console.log('Create repo!');
//Run each minute
cron.schedule('* * * * *', function() {
console.log('Scheduler executed!');
root.evictionRegisty.forEach((key, value, map) => {
if (key > Date.now() - TEN_SECS){
this.codeMap.delete(value);
this.evictionRegisty.delete(key);
console.log('Remove k/v =' + key + '/'+ value)
}
});
});
};
TA贡献1880条经验 获得超4个赞
此错误意味着“this”对象没有“evictionRegisty”字段。这意味着它不是“Infos”类。为了解决这个问题,您需要将变量作为输入传递给回调函数,或者在调用“evictionRegisty”之前简单地释放“this”。你的循环将是:
evictionRegisty.forEach((key, value, map) => {
if (key > Date.now() - TEN_SECS){
this.codeMap.delete(value);
this.evictionRegisty.delete(key);
console.log('Remove k/v =' + key + '/'+ value)
}
}
添加回答
举报