non so qual è lo scopo, ma si dovrà interrompere
function count() {
while(keepGoing) {
i = i+1;
}
}
per un po 'per dare una possibilità per keepGoing
a cambiare in qualche altro posto che corre nel frattempo. Inoltre è mai fare questo:
while(keepGoing) {
i = i+1;
}
Stai bloccando completamente il filo per tutto ... Si dovrà dividere il lavoro della tua funzione in piccoli pezzi e usare setTimeout o setInterval per eseguirlo in piccoli lotti, qualcosa di simile a quanto segue, mentre vicino a quello che si può desiderare:
var piece_n=0;
var keepGoing = true;
var interval_id = setInterval(function() {
if(keepGoing){
//do_a_short_piece_of_work(piece_n);
piece_n++;
}else{
clearInterval(interval_id);
}
},500); //ticking every half second
setTimeout(function() { keepGoing = false; }, 10000); //run for a small bit more than 10 to 10.5 seconds + do_a_short_piece_of_work() execution time
Se avete bisogno di esattamente 10 secondi senza morire di fame il resto avrete bisogno di regolare in una serie di setTimeout e sarà necessario conoscere un po 'in anticipo (più del prossimo segno di spunta) in modo da poter impostare l'ultimo setTimeo ut al momento esatto (consultando la data corrente e la data iniziale salvata). Tutto può essere diviso in blocchi più piccoli, come le istruzioni per una CPU :)
fonte
2013-03-05 16:17:55