javascript - 在 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);
});
解决方案
推荐阅读
- c# - Windows 10 上下文菜单中的正确滑块
- javascript - 如何使用 React 显示以 JSON 格式接收的 HTML
- python - 将轴格式更改为整数
- sql-server - dbexpress 和 SQL Server
- svg - 如何强制缩放路径以适合 svg 标签?
- java - F3 在 Eclipse 中不适用于 Scala-Java 混合 JAR
- c# - 使用 DotSpatial 直接读取压缩的 shapefile
- javascript - $(document).ready 导航到新页面时不会触发
- mysql - sql引擎如何处理不相等的连接查询?
- c - 崩溃后无法通过套接字重新连接到服务器?