Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

180
Visualizações
Cómo obtener una función recurrente sin un RangeError

Estoy tratando de obtener el tiempo para mostrar en la terminal, bastante simple. Quiero que cada console.log sea un segundo diferente. En lugar de ejecutar un ciclo while infinito como un neandertal, quería que el nodo js esperara un segundo antes de ejecutar la función. Sin embargo, esto no parece funcionar, ya que sigue imprimiendo el mismo tiempo una y otra vez durante quizás un par de segundos, y luego obtengo un RangeError porque superé el tamaño de la pila de llamadas (lo que sea que eso signifique). Copié esto del código de trabajo en una aplicación JavaScript/HTML que hice, que funciona perfectamente, pero supongo que a node no le gusta algo. ¿Ideas?

 function addZeroes(num) { if (num < 10) { var new_num = "0" + num } else { var new_num = num } return new_num } function timeClock(){ var refresh=1000; // Refresh rate in milli seconds mytime = setTimeout(timeDisplay() , {}, refresh) } function timeDisplay() { //creating elements rightNow = new Date(); minute = rightNow.getMinutes(); hour = rightNow.getHours(); seconds = rightNow.getSeconds(); theTime = "" theTime += addZeroes(hour) + ":" + addZeroes(minute) + ":" + addZeroes(seconds); //displaying elements console.log(theTime) timeClock() } timeDisplay()

Supongo que la primera función es irrelevante para el problema, pero no lo sé en este momento.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Para esto, no desea usar setTimeout sino setInterval .

Código de ejemplo:

 function addZeroes(num) { let new_num; if (num < 10) { new_num = "0" + num } else { new_num = num } return new_num } function timeClock(){ const refresh=1000; // Refresh rate in milli seconds let mytime = setInterval(timeDisplay, refresh) } function timeDisplay() { //creating elements let rightNow = new Date(); let minute = rightNow.getMinutes(); let hour = rightNow.getHours(); let seconds = rightNow.getSeconds(); let theTime = ""; theTime += addZeroes(hour) + ":" + addZeroes(minute) + ":" + addZeroes(seconds); //displaying elements console.log(theTime); } timeClock();

Si su objetivo final es más grande que imprimir en la terminal, recomendaría trabajar con bibliotecas como dayjs o momentjs , que tienen numerosas funciones auxiliares en lugar de agregar ceros.

EDITAR: probablemente también desee finalizar la ejecución de esta función mediante programación. Para este asunto, use clearInterval() con su variable myTime como parámetro.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda