我在raspberry pi和模块onoff上使用node来获取输入。 如果函数A在一分钟内被调用两次,我想只运行函数B
var gpio = require('onoff').Gpio;
var sensor = new gpio(7, 'in', 'falling');
var timeout = 60000;
var timeOfLastChange;
sensor.watch(function(err, value) {
console.log('Sensor value is now '+ value);
var currentTime = new Date(); //2 tick filter
if(value == false && timeOfLastChange < currentTime - timeout) var timeOfLastChange = new Date();
if(timeOfLastChange > currentTime - timeout) functionB();
});
gpio.setup(7, gpio.DIR_IN);
但这不起作用。
答案 0 :(得分:2)
如果您将日期评估更改为毫秒以匹配您的超时(int到int),那么您的日期比较将起作用。像这样的东西:
timeOfLastChange.getTime() > (currentTime.getTime() - timeout)
或者甚至更好,不要使用日期对象,只需要这样的纪元:
currentTime = Date.now();
timeOfLastChange = Date.now();
然后你的'时间'是一个类似整数的数字,与你的超时相匹配。