node 事件

2019-10-09  本文已影响0人  多点干货少点废话
const fs = require('fs');
const EventEmitter = require('events').EventEmitter;

class FindPattern extends EventEmitter {
    constructor(regex) {
        super();
        this.regex = regex;
        this.files = [];
    }

    addFile(file) {
        this.files.push(file);
        return this;
    }

    find() {
        this.files.forEach((file, index) => {
            fs.readFile(file, (err, content) => {
                if(err) {
                    this.emit('error', err);
                }
                this.emit('fileRead', file);
                if(this.regex.test(content)) {
                    this.emit('found', content);
                }
            })
        })
    }
}

const interface = new FindPattern(new RegExp("main"));

interface.addFile('a.js')
    .addFile('b.js')
    .addFile('main.js')
    .on('error', function(err) {
        console.log(err);
    })
    .on('fileRead', function(file) {
        console.log(file + ' read\n');
    })
    .on('found', function(content) {
        console.log(content.toString());
        console.log('\n');
    })
    .find()
上一篇 下一篇

猜你喜欢

热点阅读