2017-08-18 9 views
0

J'ai deux classes et je veux qu'une classe soit abonnée à l'autre. Donc quelque chose comme ça.Node.js écoute et envoie des événements

Classe:

while(1){ if(true){ //emmit some event }

classe deux:

//wait for class one to emmit some data ,and then start working with the data

Ma question est, est-il une méthode, le module .. qui peut me aider à mis en œuvre ce comportement?

+0

Quelle est la question? – tbking

+0

Je pense que vous faites référence à des threads pas à des classes, une classe est un modèle d'objet, node.js est un thread unique, il est asynchrone afin que vous puissiez créer la fonctionnalité que vous voulez mais pas dans une boucle while, vous devez relâchez l'exécution sur le noeud ou la partie asynchrone du noeud ne peut pas fonctionner. – SPlatten

+0

@tbking édité mon poste, désolé – DavidS

Répondre

0

Utilisez le EventEmitter intégré du noeud pour implémenter des événements d'émission et d'écoute dans les deux clients.

Exemple:

const EventEmitter = require('events'); 

class MyEmitter extends EventEmitter {} 

const myEmitter = new MyEmitter(); 
myEmitter.on('event',() => { 
    console.log('an event occurred!'); 
}); 
myEmitter.emit('event'); 
+0

J'ai une fonction qui vérifie la base sql et renvoie true, false. Où dois-je appeler cette fonction ici? – DavidS

+0

Dans le rappel de cette fonction, appelez 'myEmitter.emit ('SQL_RESULT');'. Définissez myEmitter dans un fichier et importez-le. – tbking

0

La classe par défaut EventEmitter fera ce que vous demandez.

const myEmitter = new MyEmitter(); 

// Listen to event 
myEmitter.on('event', (data) => { 
    console.log(data); 
}); 

// Emit event 
myEmitter.emit('event', data);