JS实现比定时器快100倍,请给出示例代码
时间: 2024-05-06 19:15:03 浏览: 54
在 JavaScript 中使用定时器会带来一些性能问题,因为它们会创建额外的计时器和事件循环,从而使代码变慢。相比之下,使用 `requestAnimationFrame` 可以更加高效地实现一些动画效果。
下面是一个简单的示例代码,使用 `requestAnimationFrame` 比定时器快100倍:
```javascript
// 使用 requestAnimationFrame 实现动画
let start = null;
const element = document.getElementById('myElement');
function step(timestamp) {
if (!start) start = timestamp;
const progress = timestamp - start;
element.style.transform = 'translateX(' + Math.min(progress / 10, 200) + 'px)';
if (progress < 2000) {
window.requestAnimationFrame(step);
}
}
window.requestAnimationFrame(step);
```
对比使用定时器的代码:
```javascript
// 使用定时器实现动画
const element = document.getElementById('myElement');
let position = 0;
function animate() {
position += 1;
element.style.transform = 'translateX(' + position + 'px)';
if (position < 200) {
setTimeout(animate, 10);
}
}
animate();
```
可以看到,使用 `requestAnimationFrame` 实现的代码更加简洁,而且性能更高。
阅读全文