11
votes

Comment créer un écouteur d'événement personnalisé dans Node.js (express.js)?

J'ai une fonction géante avec beaucoup de rappels imbriqués. Je veux le rendre plus propre et plus facile à manipuler. Donc, je pense à utiliser les auditeurs d'événements personnalisés

Comme, lorsqu'une fonction est effectuée, dans le rappel, au lieu de mettre un morceau de code, il émet simplement un événement, puis l'auditeur sera exécuté.

Alors, comment faire ça dans node.js? Je suis toujours à la recherche d'un bon exemple pour me guider.


4 commentaires

Liée Stackoverflow.com/Questtions/4903154/... ?


Merci. Je vais essayer. Lequel est le meilleur?


Le premier est le plus lié à votre problème.


Je sais que c'est une vieille question, mais que diriez-vous de async.js au lieu des auditeurs d'événements?


4 Réponses :


9
votes

Vous voulez probablement créer un EventMitter objet et appelez émettant () dessus.


0 commentaires

27
votes

Vous pouvez définir des événements comme celui-ci xxx

puis vous pouvez les émettre xxx

express.js utilise EventMitter .


6 commentaires

C'est en fait que app étend EconMitter dans Connectez Cadre que Express s'étend. connect.js@68 utils. fusion (app, evenemitter.pototype);


Donc, l'application Express peut agir comme une envoi de l'application


Cela prendra-t-il un objet ERR - app.emit ('Event: FOO', ERR, DATA) - Par exemple, si nous renvoyons le résultat d'une requête de base de données?


Comment l'appeleriez-vous d'un fichier d'itinéraire? Comment accédez-vous à l'application?


Je ne pense plus que cela fonctionne plus avec express.js 4. Tout ce que je reçois lorsque j'appelle app.emit () est une erreur non définie n'est pas une erreur de fonction


Dans Express.js, vous pouvez faire req.app.emit (...) . Parce que chaque objet de demande a une référence de l'application



6
votes

Je viens de tomber sur cette question, je voudrais ébrécher mes 2 cents, répondant spécifiquement à Luis.

in express, si vous souhaitez que l'instance "app '" pour écouter un événement personnalisé que vous feriez quelque chose Comme: xxx

puis lorsque cette route est touchée, vous verriez la réponse dans la console. Bien sûr, vous pouvez implémenter cela comme vous le souhaitez.


0 commentaires

0
votes

Le module "Evénements" nœud.js et le module "EventMitter" facilitent la communication entre les objets du nœud. Le module EventMitter est au cœur de l'architecture asynchrone asynchrone de Node. Voici comment créer des événements personnalisés et les émettre:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

//Event Listener
const EventListenerFunc = () => {
 console.log('an event occurred!');
}

//Registering the event with the listener
myEmitter.on('eventName', EventListenerFunc);

//Emitting the event 
myEmitter.emit('eventName');


0 commentaires