setInterval方法與requestAnimationFrame方法的區(qū)別較為微妙推掸。一方面留凭,最明顯的差別表現(xiàn)在setInterval可以手動(dòng)設(shè)定FPS,而requestAnimationFrame則會(huì)自動(dòng)設(shè)定FPS;但另一方面育八,即使是setInterval也不能保證按照給定的FPS執(zhí)行补箍,在瀏覽器處理繁忙時(shí)改执,很可能低于設(shè)定值。當(dāng)瀏覽器達(dá)不到設(shè)定的調(diào)用周期時(shí)坑雅,requestAnimationFrame采用跳過某些幀的方式來表現(xiàn)動(dòng)畫辈挂,雖然會(huì)有卡滯的效果但是整體速度不會(huì)拖慢,而setInterval會(huì)因此使整個(gè)程序放慢運(yùn)行裹粤,但是每一幀都會(huì)繪制出來终蒂;
總而言之,requestAnimationFrame適用于對(duì)于時(shí)間較為敏感的環(huán)境(但是動(dòng)畫邏輯更加復(fù)雜),而setInterval則可在保證程序的運(yùn)算不至于導(dǎo)致延遲的情況下提供更加簡(jiǎn)潔的邏輯(無需自行處理時(shí)間)拇泣。