 
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
  const EventEmitter = require('events');
class Counter extends EventEmitter {
    constructor(timer) {
        super();
        if (typeof timer === "number" && timer > 0) {
            this.start(timer);
        }
    }
    start(timer = 0) {
        if (this.intervalId) {
            this.stop();
        }
        this.timer = timer;
        this.emit('start', this.timer);
        this.intervalId = setInterval(() => {
            this.timer -= 1
            if (this.timer > 0) {
                this.emit('process', this.timer);
            } else {
                this.stop();
            }
        }, 1000)
    }
    stop() {
        clearInterval(this.intervalId);
        this.intervalId = undefined;
        this.emit('end', this.timer);
    }
}
const counter = new Counter();
counter.on("start", timer => console.log("start", timer));
counter.on("process", timer => console.log("process", timer));
counter.on("end", timer => console.log("end", timer));
counter.start(10)start 10
process 9
process 8
process 7
process 6
process 5
process 4
process 3
process 2
process 1
end 0