我想運行x
函數爲n
秒。我的嘗試:重複函數執行n秒
var stop = false;
setTimeout(function(){stop = true}, n);
while(!stop) x();
但這並沒有工作...我的理解的原因是,setTimeout的等待,直到沒有任務正在運行,然後執行相應的功能。是對的嗎?
另一種方式來做到這一點是這樣的:
var stop = false, started = Date.now();
while(!stop) {
if((Date.now() - started) > n) stop = true;
else x();
}
有沒有其他更好的辦法?
秒或毫秒? –
問題是,如果要完成多少次,按秒計算?因爲while循環實際上會凍結其他所有內容。這也意味着你的函數將被運行一個不可預知的次數 – axelduch
無論多少次都沒關係,直到x秒或毫秒通過,然後停止重複執行 – Almis