2016-07-21 4 views
0

私は、チャットボットスクリプト(Hubot - 端末で実行中)の演習で、最後のメッセージがスレッドに残ってからの時間をカウントする方法を探しています。進行中の時間値を含むJS変数

:その後、誰も(のは10,000ミリ秒を言わせて)私は(「!!コオロギを...コオロギ..」)はconsole.logしたい

の分のX番号のメッセージを残さなかった後、私のようなものを想像しています

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

は、しかし、私は以下

がですべてのエラーをスローするように表示されません、私が始めたコードであるカウンタとして継続的に成長しているCURRENTTIME変数を作成する方法のわからないんだけど、また」doesnの私はターミナルでそれを実行しているようにtは動作するようです。それはちょうどあなたが、私はDate.nowを使用しています()が、より良い方法があります場合、私は付いていませんよ気づく二回

module.exports = function(robot) { 
    return robot.hear(/$/i, function(msg) { 
    var startTime = (Date.now()) ; 
    return(startTime); 

    if (Date.now() - startTime > 1000) { 
    console.log("CRICKETS..!...") 
    }; 
    }); 
}; 

現在の時刻を表示します。また、ここではそれが文脈のために必要とされる場合における基本的な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)と呼んでそのタイムアウトをクリアすることができます。

我々は、コールバックを定義できますいくつかの機能newMessageを想定しfunction crickets(){ console.log('Chirp! Chirp!'); }

をAA新しいメッセージが表示されたときに呼び出されます、あなたはこのような何かを試みることができる:

var cricketTimeout = null; 
function newMessage(){ 
    //... your code 
    if (cricketTimeout) clearTimeout(cricketTimeout); 
    cricketTimeout = setTimeout(crickets, delayInMilliseconds); 
} 
関連する問題