Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

162
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!