我正在使用Johnny-Five使用被动红外探测器和C.H.I.P. Linux,单板计算机。一切都很好。
但是我说我已经定义了一个针脚和一个按钮,如下所示:
let button = new five.Button({
pin: 'XIO-P0'
});
let pir = new five.Pin({
pin: 'PWM0',
type: 'digital',
mode: 0
});
在某些时候,我决定听这样的阅读事件和按钮:
button.on('press', function() {
console.log('Button pressed');
});
pir.read(function (error, value) {
if (error) {
console.log('Error:', error);
} else {
console.log('Pin:', value);
}
});
我如何告诉Johnny-Five我不再想听那个事件?对于我的生活,我不能在文档或谷歌的任何地方找到它。
任何帮助都将不胜感激。
答案 0 :(得分:0)
因此,事实证明Button扩展了Node.js EventEmitter对象。因此,您可以使用与之关联的removeListener()
和removeAllListeners()
方法。但似乎要求您将回调定义为非匿名函数,以便您可以引用它们进行删除。
button.on('press', buttonPressCallback);
function buttonPressCallback() {
console.log('Button pressed');
}
Pin.read()
函数的工作方式不同,因此如果您希望能够以相同的方式将其终止,则需要使用Pin的事件接口。有high
,low
和data
个事件。数据会发生所有变化。
pir.on('high', pinHighCallback);
pir.on('low', pinLowCallback);
function pinHighCallback() {
console.log('Pin: HIGH');
}
function PinLowCallback() {
console.log('Pin: LOW');
}
现在要删除这些侦听器,我们只需调用以下内容:
button.removeListener('press', buttonPressCallback);
pin.removeListener('high', pinHighCallback);
pin.removeListener('low', pinLowCallback);