首页 > 解决方案 > 在 JavaScript 中链接 EventEmitters 并在emitter.on() 之前调用emitter.emit()

问题描述

在一个示例中,在event.emit ()方法之后调用了event.on() ,但结果仍然出现。我知道有些它与链接有关,但任何人都可以解释链接以及在示例中操作顺序不是问题的原因

 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);
     });

标签: javascriptnode.jsevent-handling

解决方案


推荐阅读