私は目的が何であるかを知らないが、あなたはkeepGoing
がその間に実行いくつかの他の場所に変更するための機会を与えるためにしばらくの間、
function count() {
while(keepGoing) {
i = i+1;
}
}
を中断しなければなりません。また、あなたがこれを行うことはありません:
あなたは完全に
すべてのためのスレッドをブロックしている
while(keepGoing) {
i = i+1;
}
...あなたは小さな断片にあなたの関数の仕事を分割し、小さなバッチでそれを実行するためのsetTimeoutかのsetIntervalを使用する必要があります 、次のようなもの、あなたが望むかもしれないものに近いしばらく:
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
あなたは正確に10秒を必要とする場合は、残りの飢えずにsetTimeoutメソッドの直列に調整する必要がありますし、事前に少しを知っている必要があります(次のチック以上)、最後のsetTimeoを設定することができます(現在の日付と保存された初期日付との相談)。 すべては、CPUのための命令のように、小さなチャンクに分けることができます:)