【发布时间】:2016-11-23 16:53:29
【问题描述】:
我正在开发一个与 setTimeout 有很大关系的电报机器人项目。而目前我的问题是,我无法清除超时,即使我已经将它放在module.exports 上。
这是我的previous question。
问题是,每当我清除超时时,它什么都不做。超时仍在继续。
这是我创建超时的代码
var createSingleton = require('create-singleton');
var p3 = createSingleton(function mySingleton() {
service.canceledTimeout(res,bot)
});
var myInstance3 = new p3();
我有一个叫做 promises 的模块
module.exports.timeouts = []; //general.timeouts
然后我将 setTimeout 对象放入该模块
canceledTimeout = function(res,bot) {
return general.timeouts.push(setTimeout(function () {
return updateState(general.THIRTY_SECONDS_REMAINING_CHECK_STATE, res)
.then (function(msg) {
if (msg !== null) {
return bot.sendMessage(res.chat.id, msg, general.baseFormat())
.then (function(x) {
setTimeout(function () {
updateState(general.TIMEOUT, res)
.then (function(msg) {
if (msg !== null) {
return bot.sendMessage(res.chat.id, msg, general.baseFormat());
}
});
},30000);
});
}
});
},90000));
}
每当游戏/房间结束时,我都会调用这个函数。
clearTimeout(general.timeouts);
但是,玩家再次创建房间后,超时仍然运行。
我认为问题是超时没有被清除。这是我个人的观点。
任何想法或帮助将不胜感激。 谢谢
【问题讨论】:
标签: javascript node.js instance telegram telegram-bot