我不知道目的是什麼,但你將不得不中斷
function count() {
while(keepGoing) {
i = i+1;
}
}
一會兒給一個機會,keepGoing
在運行同時其他一些地方改變。你也從來沒有做到這一點:
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的指令:)