Je suis tombé sur un comportement inattendu en passant une valeur importante en millisecondes à setTimeout()
. Par exemple,
setTimeout(some_callback, Number.MAX_VALUE);
et
setTimeout(some_callback, Infinity);
les deux causent some_callback
d'être exécutés presque immédiatement, comme si j'avais passé 0
au lieu d'un grand nombre comme retard.
Pourquoi cela arrive-t-il?
delay >>> 0
se produit, donc le délai passé est nul. Dans tous les cas, le fait que le délai soit stocké sous la forme d'un int non signé 32 bits explique ce comportement. Merci!