为什么 window.requestAnimationFrame 只运行一次 step 函数?
在浏览器中打开以下 HTML 文件时,时间戳仅记录一次,为什么该step函数不像我那样每秒调用多次?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<script>
function step(timestamp) { console.log(timestamp) }
window.requestAnimationFrame(step)
</script>
</body>
</html>
回答
它只运行一次。为了让它重复,我们必须调用requestAnimationFrame内部step让它继续https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
前:
function step(timestamp) {
console.log(timestamp)
}
window.requestAnimationFrame(step)
后:
let i = 0;
function step(timestamp) {
console.log(timestamp);
i++;
if (i < 10) {
window.requestAnimationFrame(step);
}
}
window.requestAnimationFrame(step)
THE END
二维码