2017-03-09 8 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,low、およびdataイベントがあります。データはすべて変更されます。

button.removeListener('press', buttonPressCallback); 
pin.removeListener('high', pinHighCallback); 
pin.removeListener('low', pinLowCallback); 
:だから今
pir.on('high', pinHighCallback); 

pir.on('low', pinLowCallback); 

function pinHighCallback() { 
    console.log('Pin: HIGH'); 
} 

function PinLowCallback() { 
    console.log('Pin: LOW'); 
} 

は我々だけで次のことを呼ぶようなこれらのリスナーを削除します
関連する問題