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