Durante il tentativo di rispondere this question, ho incontrato un strano comportamento (che non è lo stesso: il suo è dovuto al troppo poche iterazioni, la miniera di troppo):Un ciclo 3,000,000,000 iterazioni si comporta stranamente
HTML:
<button id="go">it will be legend...</button>
<div id="output"></div>
JS:
var output = document.getElementById('output');
document.getElementById('go').onclick = function() {
output.textContent += 'wait for it...';
for (var i=0; i<3000000000; i++) {
var unused = i; // don't really care
}
output.textContent += ' dary!';
};
Il ciclo richiede pochi secondi per eseguire, a causa delle sue 3.000.000.000 di iterazioni.
Una volta che il pulsante viene premuto, quello che mi aspettavo:
wait for it...
appare- il processo si blocca un po 'a causa del ciclo
dary!
appare
Cosa è realmente accaduto:
- il processo si blocca un po 'a causa del ciclo
wait for it... dary!
appare insieme
Qualsiasi idea del perché un tale comportamento?
Da solo: fiddle.
Si comporta in questo modo in tutti i browser? Funziona correttamente se imposti un piccolo timeout – Huangism
Ho visto il violino, è davvero strano .... e ho pensato che 'looping' è un processo plain-vanilla! –
Anche i browser ottimizzano le modifiche al DOM/CSS in modo che vengano eseguite solo quando necessario (per evitare più riflussi consecutivi). –