Ho riscontrato un comportamento imprevisto durante il passaggio di un valore elevato in millisecondi a setTimeout()
. Per esempio,
setTimeout(some_callback, Number.MAX_VALUE);
e
setTimeout(some_callback, Infinity);
entrambi fanno sì some_callback
che vengano eseguiti quasi immediatamente, come se avessi passato 0
invece un gran numero come ritardo.
Perché succede questo?
delay >>> 0
succede qualcosa di simile , quindi il ritardo passato è zero. In ogni caso, il fatto che il ritardo sia memorizzato come un int senza segno a 32 bit spiega questo comportamento. Grazie!