requestAnimationFrame(() => {
// This callback runs immediately before frame A
requestAnimationFrame(() => {
// This callback runs immediately before frame B; the frame after A
// ...
});
});
我們可以為此寫一個實用函數:
function waitFrames(n, callback) {
if (n > 0) {
// After next frame, wait n-1 frames
requestAnimationFrame(() => waitFrames(n - 1, callback));
} else {
// Wait 0 frames; run before next frame
requestAnimationFrame(callback);
}
}
requestAnimationFrame()
函數將回呼排隊以在渲染一幀之前立即運行。一旦瀏覽器開始處理佇列,所有對其的進一步呼叫都會計入之後的訊框。這意味著我們可以使用它來「等待」一定數量的幀:
我們可以為此寫一個實用函數:
就您而言,您需要等待 1 幀。