Javascript this.u 在函数中使用时未定义
Javascript this.u undefined when using in function
我正在 node.js 中编写一个 discord 机器人,我正在开发一项功能,该机器人从启动开始每小时执行一次功能。
在这个例子中,为了测试,我用 setTimeout 替换了 setInterval。
class Controller {
constructor() {
this.u = new u.Util();
this.prefix = ".";
}
updateRanks(guilds){
guilds.forEach(g => {
this.u.updateRanksAuto(g);
setTimeout(function(){
this.u.updateRanksAuto(g);
}, 6000 );
});
}
}
我第一次调用 this.u.updateRanksAuto(g)
它工作得很好,但显然这只执行了一次。
当我在函数中尝试它时,它告诉我 this.u
未定义。
我觉得这是一个明显的错误,但我想不通。
function()
创建新的上下文,所以 this
指的是这个函数。
您可以改用箭头:
setTimeout(() =>
{
this.u.updateRanksAuto(g);
}, 6000 );
或将 this
存储在某个变量中或使用 .bind(this)
试试这个解决方案,如果有效请告诉我
class Controller {
constructor() {
this.u = new u.Util();
this.prefix = ".";
}
updateRanks(guilds){
let that = this;
guilds.forEach(g => {
that.u.updateRanksAuto(g);
setTimeout(function(){
that.u.updateRanksAuto(g);
}, 6000 );
});
}
}
我正在 node.js 中编写一个 discord 机器人,我正在开发一项功能,该机器人从启动开始每小时执行一次功能。
在这个例子中,为了测试,我用 setTimeout 替换了 setInterval。
class Controller {
constructor() {
this.u = new u.Util();
this.prefix = ".";
}
updateRanks(guilds){
guilds.forEach(g => {
this.u.updateRanksAuto(g);
setTimeout(function(){
this.u.updateRanksAuto(g);
}, 6000 );
});
}
}
我第一次调用 this.u.updateRanksAuto(g)
它工作得很好,但显然这只执行了一次。
当我在函数中尝试它时,它告诉我 this.u
未定义。
我觉得这是一个明显的错误,但我想不通。
function()
创建新的上下文,所以 this
指的是这个函数。
您可以改用箭头:
setTimeout(() =>
{
this.u.updateRanksAuto(g);
}, 6000 );
或将 this
存储在某个变量中或使用 .bind(this)
试试这个解决方案,如果有效请告诉我
class Controller {
constructor() {
this.u = new u.Util();
this.prefix = ".";
}
updateRanks(guilds){
let that = this;
guilds.forEach(g => {
that.u.updateRanksAuto(g);
setTimeout(function(){
that.u.updateRanksAuto(g);
}, 6000 );
});
}
}