Ben amacının ne olduğunu bilmiyorum ama keepGoing
arada çalışan diğer bazı yerde değiştirmek için bir şans vermek için bir süre
function count() {
while(keepGoing) {
i = i+1;
}
}
kesmek zorunda kalacak. Ayrıca bunu asla:
tamamen
her şey için iplik engelliyor
while(keepGoing) {
i = i+1;
}
... Sen küçük parçalar halinde işlevin iş bölmek ve küçük gruplar halinde çalıştırmak için setTimeout veya setInterval kullanmak zorunda olacak , size istediğinizin yakın iken aşağıdaki gibi bir şey: Eğer kalanını açlıktan olmadan tam olarak 10 saniye gerekiyorsa
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
Eğer setTimeout bir dizi ayarlamak gerekir ve önceden biraz bilmek gerekir (bir sonraki onaydan daha fazla) böylece son setTimeo'yu ayarlayabilirsiniz tam zamanında (geçerli tarihe ve kayıtlı başlangıç tarihine bakılarak). Her şey cpu için talimatlar gibi daha küçük parçalara bölünebilir :)