Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

78
Vistas
El temporizador de cuenta regresiva de Vue que usa el observador se acelera al modificar la variable observada desde el método

muy nuevo en Vue y JS. Configuré un observador para una variable timerCount (inicialmente establecida en 5) que hace un temporizador de 5 segundos. Cuando la variable llega a 0, se ejecuta algún código y restablezco el temporizador a 5 para reiniciarlo. Esto funciona perfectamente bien, sin embargo, tengo un evento de clic que llama a un método, que ejecutará un código diferente y luego restablecerá el temporizador a 5 también, pero ahora mi temporizador está acelerado (el doble de rápido).

Por lo que pude encontrar al buscar en Google, parece que hay varias instancias de observador/temporizador ejecutándose al mismo tiempo, que es lo que provoca la aceleración. ¿Cómo soluciono esto para que mi método simplemente reinicie el temporizador como de costumbre?

 watch: { timerCount: { handler(value){ //timer for 5 seconds if (value>0){ setTimeout(() => { this.timerCount--; }, 1000); } //if timer hits 0, execute code and reset timerCount to 5 seconds, this works fine else{ /* Code */ this.timerCount=5 } }, immediate: true, } }, methods:{ //this resets the timer, but it now goes twice as fast, don't know why. otherMethod(){ /* Code */ this.timerCount=5 }

}

¿Alguna ayuda?

Aquí está la publicación donde obtuve este código: ¿Cómo creo una cuenta regresiva simple de 10 segundos en Vue.js?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En tu código, estás viendo timerCount. Cuando realiza un cambio en su timeCount significa que, cuando ejecuta otherMethod, Vue lo observa, luego ejecuta el observador nuevamente y el controlador para este observador se ejecuta nuevamente. Cada vez que cambia la variable timerCount, su observador se ejecuta una y otra vez.

En realidad, sin observador, puede comenzar su tiempo dentro de su evento creado con setInterval (no setTimeout). setInterval ejecuta su código dentro del intervalo dado pero no estrictamente 1000ms. Puede ser 1005ms o menos.

Puede crear alguna función dentro de setInterval y darle como 100 ms y controlar el tiempo si pasa 5 segundos o no.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda