La déliaison des événements dans Node.js
Prenons stdin.on
comme un exemple. Les rappels à stdin.on
de la pile, si je vous écris (en CoffeeScript)
stdin = process.openStdin()
stdin.setEncoding 'utf8'
stdin.on 'data', (input) -> console.log 'One'
stdin.on 'data', (input) -> console.log 'Two'
puis, à chaque fois que j'ai frappé retourner à l'invite de commandes, - je obtenir
One
Two
Ma question est, est-il possible de supprimer/remplacer un rappel une fois lié? Ou est la seule méthode pour lier un proxy de rappel et de la gestion de l'état moi-même?
- Comment faire pour supprimer inline fonctions d'écouteur? Comme
server.on('connect', function(pkt){...});
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
removeListener(eventType, callback)
pour supprimer un événement, qui devrait fonctionner avec tous les types d'émetteurs.Exemple à partir de l'API docs:
Vous avez donc besoin d'avoir une variable qui contient une référence à la fonction de rappel, parce que, évidemment, il est impossible de dire qui de rappel que vous souhaitez supprimer.
MODIFIER
Devrait être quelqu'un comme ça dans CS:
Voir: http://nodejs.org/docs/latest/api/events.html#emitter.removeListener
server.on('connect', function(pkt){...});
Ou vous pouvez utiliser:
stdin.once
au lieu destdin.on