我正在研究一個與setTimeout有很大關係的電報機器人項目。而目前我的問題是,我無法清除超時,即使我已經把它放在module.exports
上。我的previous question。節點JS - 來自以前實例或狀態的clearTimeout
問題是,每當我清除超時,它什麼都不做。超時仍然繼續。
這裏是我的代碼來創建超時
var createSingleton = require('create-singleton');
var p3 = createSingleton(function mySingleton() {
service.canceledTimeout(res,bot)
});
var myInstance3 = new p3();
我得到了被稱爲承諾
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);
但,玩家再次創造了一個房間後,超時仍然運行。
我認爲問題是超時未被清除。這是我的觀點。
任何想法或幫助將不勝感激球員。 感謝
喜的人,謝謝。將首先檢查它,並將更新結果。歡呼聲, – Webster
曼恩,認真嗎?你剛剛治好了我的頭痛!我也向數組添加了第二個超時。感謝您花時間幫助我。我讚賞它,標記! – Webster