Pregunta

Vamos a tomar como ejemplo stdin.on. Devoluciones de llamada a pila stdin.on, por lo 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'

A continuación, cada vez que pulse la tecla Intro en el indicador, lo entiendo

One
Two

Mi pregunta es, ¿hay alguna manera de eliminar / reemplazar una devolución de llamada una vez unido? O es el único enfoque para unir una devolución de llamada proxy y administrar el estado mismo?

¿Fue útil?

Solución

Se puede utilizar removeListener(eventType, callback) para eliminar un evento, que debe trabajar con todo tipo de emisores.

Ejemplo a partir de los documentos de la API:

var callback = function(stream) {
  console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);

Así que hay que tener una variable que contiene una referencia a la devolución de llamada, porque, obviamente, es lo contrario imposible decir cuál de devolución de llamada que desea han eliminado.

Editar
Debe ser alguien como este 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'

Ver: http://nodejs.org/docs/latest/api/events.html # emitter.removeListener

Otros consejos

O puede usar:

stdin.once en lugar de stdin.on

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top