Estaba probando mi sitio web con la aceleración de Chrome, usando el móvil de gama baja. Noté que uno de mis intervalos JS se estaba ejecutando mucho más lento de lo que debería ser sin motivo alguno. Decidí investigar más a fondo, así que escribí este código:
let prev = Date.now(); let x = 0; setInterval(() => { if(x++ % 100 == 0) { console.log(Date.now() - prev); prev = Date.now(); } }, 10);
Establece un intervalo para ejecutar cada 10 ms, e imprime el tiempo transcurrido cada 100 ejecuciones. Esto debería ser 1 segundo, pero está imprimiendo de 4 a 8 segundos. Esto no debería suceder, porque obtener la fecha cada 100 ejecuciones y luego registrarla debería ser pan comido, incluso para "móviles de gama baja".
Mi mejor suposición en este momento es que la aceleración de Chrome también acelera específicamente el ciclo de eventos, lo que a veces da resultados engañosos, como aquí. ¿Es esto cierto?