2015-08-27 1 views
0

en lisant le documantation node-mysql j'ai vu une utilisation comme je l'ai collé ci-dessousutilisation étrange dans documantation node-mysql

var query = connection.query('SELECT * FROM posts'); 
query 
    .on('error', function(err) { 
    // Handle error, an 'end' event will be emitted after this as well 
    }) 
    .on('fields', function(fields) { 
    // the field packets for the rows to follow 
    }) 
    .on('result', function(row) { 
    // Pausing the connnection is useful if your processing involves I/O 
    connection.pause(); 

    processRow(row, function() { 
     connection.resume(); 
    }); 
    }) 
    .on('end', function() { 
    // all rows have been received 
    }); 

Je me demande comment ils utilisent ces événements ceux-ci peuvent être utilisés avec le nom quel que soit noms d'utilisateur la requête query dans l'exemple quand je crée des événements personnalisés je les nomme d'abord par exemple var foo=new events.EventEmitter et après cela dans l'ensemble de la page je dois l'utiliser comme foo.on("someEvent") mais ici, ils lient d'une façon ou d'une autre le var créé par l'utilisateur comme nom d'événement dans l'exemple requête MySQL comme query et l'émetteur de l'événement a le même nom en quelque sorte

et la deuxième question de savoir comment est-ce possible aux événements de la chaîne car ils utilisent

.on("event").on("anotherEvent") 

cette question peut sembler étrange, mais je me demande vraiment comment cela fonctionne et cela va changer ma conception de code complètement

+0

Il ce qui est pas tout à fait clair votre première question. Pouvez-vous peut-être expliquer un peu plus ou fournir des exemples pour mieux comprendre la question? – mscdex

+0

mettre à jour la question maintenant @mscdex – nikoss

Répondre

1

query est juste votre nom de variable pour ce qui est une instance d'un Query dans le noeud-mysql lib. Vous avez accès à toutes les fonctions que l'objet exporte.

on est hérité de EventEmitter dans le noyau node.js. L'essentiel est que l'appel on renvoie « lui-même » à savoir this:

émetteur de retour, afin que les appels peuvent être chaînés.

Cela vous permet d'enchaîner les appels on

+0

comment je peux retourner l'émetteur d'événements de la fonction cb je ne comprends pas, il ne sera pas retourné à la variable – nikoss

+0

ah je vois qu'il est retourné par le module lui-même – nikoss