2016-07-21 3 views
0

Я работаю над сценарием chatbot (Hubot - running in terminal) и ищет метод для подсчета времени с момента последнего сообщения в потоке. Тогда после того, как никто не оставил сообщение для X количества минут (скажем, 10000 миллисекунд) Я хотел бы console.logПеременная JS, содержащая текущее значение времени

Я воображая что-то вроде («сверчок .. сверчки ..!»):

//currentTime - startTime = timeSince 
//and 
// if(timeSince > 10,000) 
// {console.log("Crickets!..") 

однако я не уверен, как создать переменную CURRENTTIME, как постоянно растущий счетчик

Ниже приведен код, который я начал, который не появляется бросать какие-либо ошибки в, но и Безразлично» t, похоже, работает, поскольку я запускаю его в терминале. Он просто выводит текущее время дважды

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

Параметр 'Функция setTimeout' позволяет вызвать функция обратного вызова после задержки. –

ответ

0

Вы всегда можете использовать setTimeout и отменить его в случае необходимости

Псевдо-код:

var myTimeout = setTimeout(function() { 
    //nobody has left a message for 10 seconds 
}, 10000); 
if (user has left message) 
    clearTimeout(myTimeout); 
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); 
} 
Смежные вопросы