事情经过
继承了EventEmitter的类,会出现接收到两次finish信号的问题,但代码里看到只发了一次信号。
export default new class Parser extends EventEmitter {
}
this.emit('finish');
parser.on("finish", () => {
cb(null)
})
问题
其实问题就出现在这个export default new class Parser
身上
因为导出模块如果是单例的,相当于其他类也会调用同一个实例,多次收到信号的时候就会出现冲突了。
总结
当我们想用单例类的时候,可以export default new class
,但是如果是需要多个实例的,那就必须要export default class
,在使用的时候再new出来。