javascript events - loop - Desenlazar eventos en Node.js
coffeescript vs typescript (2)
Tomemos stdin.on
como ejemplo. Devolución de stdin.on
a stdin.on
stack, así que si escribo (en CoffeeScript)
stdin = process.openStdin()
stdin.setEncoding ''utf8''
stdin.on ''data'', (input) -> console.log ''One''
stdin.on ''data'', (input) -> console.log ''Two''
luego, cada vez que pulso retorno en el indicador, recibo
One
Two
Mi pregunta es, ¿hay alguna manera de eliminar / reemplazar una devolución de llamada una vez enlazada? ¿O es el único enfoque para enlazar una devolución de llamada de proxy y administrar el estado por mí mismo?
O puedes usar:
stdin.once
lugar de stdin.on
Puede usar removeListener(eventType, callback)
para eliminar un evento, que debería funcionar con todo tipo de emisores.
Ejemplo de la documentación de la API:
var callback = function(stream) {
console.log(''someone connected!'');
};
server.on(''connection'', callback);
// ...
server.removeListener(''connection'', callback);
Por lo tanto, debe tener una variable que contenga una referencia a la devolución de llamada, ya que, obviamente, es imposible decir qué devolución de llamada desea eliminar.
EDITAR
Debería ser alguien así en CS:
stdin = process.openStdin()
stdin.setEncoding ''utf8''
logger = (input) -> console.log ''One''
stdin.on ''data'', logger
stdin.removeListener ''data'', logger
stdin.on ''data'', (input) -> console.log ''Two''
Consulte: http://nodejs.org/docs/latest/api/events.html#emitter.removeListener