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

165
Vistas
SetInterval dispara constantemente (0ms) para números grandes aparentemente arbitrarios

Esto no es práctico, pero estoy absolutamente desconcertado.

El único código que estoy usando es este siguiendo 2 líneas una y otra vez con diferentes números en la consola de un navegador:

 var i = setInterval(() => console.log('test'), INTERVAL_VALUE); clearInterval(i);

Estaba tratando de probar una entrada de número que controlaba un temporizador setInterval cuando accidentalmente descubrí que si solo escribía un gran número aleatorio en el cuadro (como lo haría cualquier buen evaluador de control de calidad), comenzaba a fallar. Pensé que era un problema con mi propio código, pero lo he reducido al caso reproducible lastimosamente mínimo anterior. Por alguna razón, ciertos rangos de números grandes para el intervalo hacen que se comporte como si se hubiera dado el valor 0 (es decir, imprime "prueba" en la consola cientos de veces por segundo).

Un rango de ejemplo es [11,000,000,000 - 12,000,000,000] . El rango no es exacto, ya que se extiende un poco más allá de los límites en ambas direcciones y no he encontrado los límites exactos, pero todos los valores dentro de ese rango causan problemas (incluido el valor con el que descubrí esto: 12,345,678,900 ). Si hace 10,000,000,000 o 13,000,000,000 , entonces (aparentemente) funciona como se esperaba (al menos, no fue rápido, es difícil probar un intervalo de 5 meses).

Probando números aleatorios, pude encontrar números mucho más grandes (más de 20 dígitos) que desencadenan y no desencadenan este problema, parece ser arbitrario, o al menos no relacionado con la escala.

¿Es este un problema conocido? ¿Alguien tiene idea de por qué puede estar pasando? Tengo que imaginar que es algún tipo de error de redondeo flotante o algo así. Obviamente, no es un problema para la mayoría de los desarrolladores que no pueda configurar un temporizador de más de 5 meses en el navegador, pero de todos modos es extraño y no está documentado AFAIK.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Desde MDN :

Nota: El argumento de retraso se convierte en un entero de 32 bits con signo. Esto limita efectivamente la demora a 2147483647 ms, ya que se especifica como un entero con signo en el IDL.

Está eligiendo un número más grande que el que puede caber en un número de 32 bits, por lo que cuando se convierte, a veces se convierte en un número negativo (si está en el rango correcto).

about 4 years ago · Santiago Trujillo 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