【发布时间】:2016-02-08 15:54:38
【问题描述】:
我知道 setTimeout 中的 this 默认对应窗口,所以我一直在使用 bind 并将其传递给自执行函数,但是当 setTimeout 最终运行时(第一次运行很好,由 TeaBot._manageTeaRound 调用(),但在自我执行时并不好)这是未定义的。这是我的代码,我哪里出错了? (我删除了一些可能不相关的代码行)。谢谢你的帮助:)
TeaBot.prototype._manageTeaRound = function(originalMessage, channel){
var self = this;
self.teaMaker = this._getUserById(originalMessage.user);
//now wait 3 minutes for people to send their order
self._runTimer(self,channel);
}
TeaBot.prototype._runTimer =function(self, channel) {
// do stuff
console.log(self.teaMaker.name); //undefined
var interval = self.interval,
teaMaker = self.teaMaker;
console.log("self.interval is " + self.interval);
if(interval === 0){
interval++;
self.interval = interval;
setTimeout(self._runTimer.bind(self, channel), 180000);
}else{
self.interval = 0;
}
}
【问题讨论】:
-
签出: setInterval / clearInterval 。也许它对你有用..
标签: javascript settimeout