我正在使用聊天机器人脚本(Hubot - 在终端中运行)练习并寻找一种方法来计算自上一条消息留在线程中以来的时间。然后,没有人留下X分钟的消息(让我们说10,000毫秒)我想console.log(" CRICKETS!.. CRICKETS!..")
我想象的是:
//currentTime - startTime = timeSince
//and
// if( timeSince > 10,000)
// {console.log("Crickets!..")
但是我不确定如何将currentTime变量创建为持续增长的计数器
下面是我已启动的代码,它似乎没有出现任何错误,但似乎无法正常运行,因为我在终端中运行它。它只打印当前时间两次
module.exports = function(robot) {
return robot.hear(/$/i, function(msg) {
var startTime = (Date.now()) ;
return(startTime);
if (Date.now() - startTime > 1000) {
console.log("CRICKETS..!...")
};
});
};
您会注意到我使用的是Date.now(),但如果有更好的方法,我就不会附上。此外,还有一个链接到基本的hubot脚本,以防上下文需要它 - https://github.com/github/hubot/blob/master/docs/scripting.md
答案 0 :(得分:0)
您可以随时使用setTimeout
并在需要时取消
的伪代码:
var myTimeout = setTimeout(function () {
//nobody has left a message for 10 seconds
}, 10000);
if (user has left message)
clearTimeout(myTimeout);
答案 1 :(得分:0)
window.setTimeout
函数允许您在延迟后触发回调函数。您可以通过调用window.clearTimeout(value_returned_by_setTimeout)
来清除超时。
我们可以定义一个回调:function crickets(){ console.log('Chirp! Chirp!'); }
假设每当出现新消息时都会调用某个函数newMessage
,您可以尝试这样的事情:
var cricketTimeout = null;
function newMessage(){
//... your code
if (cricketTimeout) clearTimeout(cricketTimeout);
cricketTimeout = setTimeout(crickets, delayInMilliseconds);
}