我知道setInterval
函數幾乎是單線程的。但是,如果我們將時間設置爲一個很小的值像50毫秒:setInterval()瀏覽器隊列
setInterval(function()
{
// do really heavy stuff
}, 50);
那麼第一個生成的事件可能無法按時完成那麼我想第二個事件是第三放入瀏覽器的隊列,然後,第四等所以基本上,這意味着瀏覽器的隊列越來越大實在是快,這顯然不是一件好事(是嗎?)
到目前爲止,我都與這兩個解決方案:
1)等待第一個事件完成,然後調用第二個(使用超時):
var func = function()
{
setTimeout(function()
{
// do really heavy stuff and when it's finished call again
func();
}, 50)
}
2)創建一個監視事件的狀態的標誌:
var isIntervalInProcess = false;
setInterval(function()
{
if (isIntervalInProcess)
return false;
isIntervalInProcess = true;
// do really heavy stuff
isIntervalInProcess = false;
}, 50);
是擺脫事件overlaping的這些最佳做法?