繁体   English   中英

在Node.js中删除Johnny-Five事件的侦听器

[英]Remove listener for Johnny-Five event in Node.js

我正在使用Johnny-Five与无源红外探测器和CHIP 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);
  }
});

我如何告诉约翰尼五世,我不想再听那件事了? 我一生无法在文档或Google的任何地方找到它。

任何帮助,将不胜感激。

因此,事实证明Button扩展了Node.js EventEmitter对象。 这样,您可以使用与其关联的removeListener()removeAllListeners()方法。 但这似乎要求您将回调定义为非匿名函数,以便可以引用它们以将其删除。

button.on('press', buttonPressCallback);

function buttonPressCallback() {
  console.log('Button pressed');
}

Pin.read()函数的工作方式不同,因此,如果您希望以相同的方式将其杀死,则需要使用Pin的事件接口。 highlowdata事件。 数据会进行所有更改。

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM