![](/img/trans.png)
[英]scroll events: requestAnimationFrame VS requestIdleCallback VS passive event listeners
[英]Using requestAnimationFrame inside requestIdleCallback
如果我從 JS 對 DOM 中的更改進行動畫處理(例如,將節點的 textContent 的值從 1 更改為 500),在requestIdleCallback
中使用requestAnimationFrame
或requestAnimationFrame
會更好嗎?
如果您想為某些代碼設置動畫,則僅使用requestAnimationFrame
,如果您只想在瀏覽器無事可做時執行操作,則使用requestIdleCallback
。
為簡化起見,讓我們考慮requestAnimationFrame
和requestIdleCallback
都是setTimeout
調用,變量 timeout arguments。
requestAnimationFrame
然后將是setTimeout(fn, time_until_next_screen_refresh)
。 fn
將在頁面繪制到屏幕之前被調用。 這是目前我們必須制作動畫的最佳計時器,因為它確保我們在每個實際幀中只進行一次視覺修改,以監視器能夠渲染的速度,因此在每一幀,如果我們的代碼很快足夠的。
requestIdleCallback
將是setTimeout(fn, time_until_idle)
。 一旦瀏覽器無事可做, fn
就會被調用。 這可以立即進行,也可以在幾個事件循環迭代中進行。
因此,雖然兩者都有類似的 API,但它們提供了完全不同的功能,唯一可行的 animation 是requestAnimationFrame
,因為requestIdleCallback
基本上與渲染沒有任何聯系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.