Creé un objeto de temporizador con diferentes métodos de temporizador, y estoy completamente feliz de cómo funciona. Sin embargo, no estoy satisfecho con la calidad del código. No puedo entender cómo puedo obtener los mismos métodos de trabajo sin crear variables adicionales, en particular, la propiedad intervalId y la función resetSecAddMin . ¿Es posible que esta solución funcione sin estas variables adicionales?
El código:
const timer = { secondsPassed: 0, minsPassed: 0, intervalId: null, startTimer() { this.intervalId = setInterval(() => { const resetSecAddMin = () => { this.secondsPassed = 0; this.minsPassed += 1 }; this.secondsPassed < 59 ? this.secondsPassed += 1 : resetSecAddMin(); }, [1000]); }, getTime() { return this.secondsPassed < 10 ? `${this.minsPassed}:0${this.secondsPassed}` : `${this.minsPassed}:${this.secondsPassed}`; }, stopTimer() { clearInterval(this.intervalId); }, resetTimer() { this.secondsPassed = 0; this.minsPassed = 0; }, };Espero que esta pregunta aporte algo de valor a la comunidad. Creo que escribir un código legible no es menos importante que crear soluciones que funcionen.
En realidad no necesitas ningún temporizador. En el método startTimer() registra la hora de inicio this.startTime = Date.now() . Y luego dentro de getTime() obtienes el delta en milisegundos var delta = Date.now() - this.startTime . Será en milisegundos, pero puedes dividir por 1000 para obtener segundos y calcular los minutos también por división.