2017-03-09 34 views
0

我正在使用Johnny-Five與被動紅外探測器和C.H.I.P協同工作。 Linux,單板電腦。一切工作正常。刪除Node.js中Johnny-Five事件的監聽器

但說我已經定義了一個引腳和一個按鈕,像這樣:

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我不想再聽這個事件?在我的生活中,我無法在文檔或Google的任何地方找到它。

任何幫助,將不勝感激。

回答

0

所以事實證明,Button擴展了Node.js EventEmitter對象。因此,您可以使用與其關聯的removeListener()removeAllListeners()方法。但它似乎要求您將回調定義爲非匿名函數,以便您可以引用它們以進行刪除。

button.on('press', buttonPressCallback); 

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

Pin.read()功能不相同的方式工作,所以如果你希望能夠把它扼殺掉以同樣的方式,你需要使用的引腳事件接口。有high,lowdata事件。數據完成所有更改。

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