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 P>
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é. P>
Alors, comment faire ça dans node.js? Je suis toujours à la recherche d'un bon exemple pour me guider. P>
4 Réponses :
Vous voulez probablement créer un EventMitter objet et appelez émettant () code> dessus. p>
Vous pouvez définir des événements comme celui-ci puis vous pouvez les émettre p> express.js em> utilise EventMitter code>. p> p>
C'est en fait que app code> étend
EconMitter code> dans Connectez B> Cadre que Express B> s'étend. connect.js@68
utils. fusion (app, evenemitter.pototype); code>
Donc, l'application Express code> 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 (...) code>. Parce que chaque objet de demande a une référence de l'application
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: p> 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. P> p>
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');
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 code> au lieu des auditeurs d'événements?