Цепочка в EventEmitters в JavaScript и вызов emitter.emit () перед emitter.on () - PullRequest
0 голосов
/ 18 мая 2018

В примере event.on () был вызван после метода event.emit () , но результаты все же появились.Я знаю, что некоторые из них связаны с цепочкой, но кто-нибудь может объяснить цепочку и причину, по которой порядок операций не имеет значения в примере

 var EventEmitter = require('events').EventEmitter;
   var fs = require('fs');


function findPattern(files, regex) {
     var emitter = new EventEmitter();
     files.forEach(function(file) {
       fs.readFile(file, 'utf8', function(err, content) {
         if(err)
           return emitter.emit('error', err);
         emitter.emit('fileread', file);
         var match = null;
         if(match = content.match(regex))
           match.forEach(function(elem) {
             emitter.emit('found', file, elem);
         });         });
   });
     return emitter;
   }


   findPattern(
       ['fileA.txt', 'fileB.json'],
       /hello \w+/g
     )
     .on('fileread', function(file) {
       console.log(file + ' was read');
     })
     .on('found', function(file, match) {
       console.log('Matched "' + match + '" in file ' + file);
     })
     .on('error', function(err) {
       console.log('Error emitted: ' + err.message);
     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...