我在項目中使用requestAnimationFrame
,需要根據用戶輸入觸發某些音頻和視頻事件。當我收到輸入時,我緩存在requestAnimationFrame
的下一個過程中要呈現的信息,并繼續進行處理以立即呈現音頻事件。
我的問題是:音頻輸出信息的處理是否會延遲視覺渲染并導致jank?例如,如果。。。
- 鼠標點擊時間戳為15毫秒;
- requestAnimationFrame的下一次傳遞被安排在16ms(點擊后1ms)發生;和
- 處理鼠標點擊音頻渲染需要5毫秒;
處理鼠標點擊音頻渲染(將在時間戳20ms處完成)是否會將requestAnimationFrame的執行延遲5ms?或者requestAnimationFrame
運行在一個獨立的thread上,而這個獨立的thread不受事件循環的影響嗎?
Thanks!
不,
requestAnimationFrame
(rAF)對另一個thread不起作用,所以是的,如果事件循環中有一個長任務,它會延遲事件循環中發生的所有其他事情,包括rAF。但是別擔心,你的rAF回調也需要一些時間來執行,如果你的click處理程序真的只需要1ms,它就不會被注意到。