2016-11-27 13 views
0

Amazon Dashボタンを購入しましたが、dash-button libraryを使用しています。私はこのコードを持っています:関数をx秒に1回だけ呼び出す

var DashButton = require("dash-button"); 

const DASH_BUTTON_MAC_ADDRESS = "xx:xx:xx:xx:xx:xx"; 

let button = new DashButton(DASH_BUTTON_MAC_ADDRESS); 

console.log("ready"); 

let subscription = button.addListener(function(){ 
    let date = new Date(); 
    console.log(date.toTimeString() + ": button pressed!"); 
}); 

この機能は、ボタンプレスで時々2回呼び出されます。ここでは、出力は次のようになります。

ready 
10:48:29 GMT+0000 (UTC): button pressed! - first button press 
10:48:39 GMT+0000 (UTC): button pressed! - second button press 
10:48:40 GMT+0000 (UTC): button pressed! - second button press 

はそれだけx秒ごとに呼び出すことができるように機能をクールダウンの並べ替えを追加する方法はありますか?

+0

少なくとも関連:http://stackoverflow.com/questions/24004791/can-someone-explain-the- debounce-function-in-javascript –

答えて

0

あなたが複数の場所でこれを必要とし、それをシンプルに保つためにしたくない場合は、次の

var isButtonAvaiable = true; 
let subscription = button.addListener(function(){ 
    if(isButtonAvaiable === false) return; 
    isButtonAvaiable = false; 
    setTimeout(function() { isButtonAvaiable = true; }, /*disableButtonTimeInMs*/ 1000); 

    let date = new Date(); 
    console.log(date.toTimeString() + ": button pressed!"); 
}); 
+1

'setTimeout(function(){isButtonAvaiable = true;}、1000);' –

+0

これはありません。少なくともクロムに対して。それ以外のブラウザでは – NtFreX

+0

自分自身でクロームを使用する場合があります。https://jsfiddle.net/p7amt4od/ –

関連する問題