还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。
No. | 内容链接 |
---|---|
1 | Openlayers 【入门教程】 - 【源代码+示例300+】 |
2 | Leaflet 【入门教程】 - 【源代码+图文示例 150+】 |
3 | Cesium 【入门教程】 - 【源代码+图文示例200+】 |
4 | MapboxGL【入门教程】 - 【源代码+图文示例150+】 |
5 | 前端就业宝典 【面试题+详细答案 1000+】 |
setTimeout 是 JavaScript 中的一个全局函数,用于在指定的毫秒数后调用一个函数或执行一段代码。此函数返回一个 ID,可用于清除定时器(通过调用 clearTimeout 函数)。
function delayedAlert() { alert('This was delayed by 2 seconds!'); } let timeoutId = setTimeout(delayedAlert, 2000); // 可以在任何时间取消定时器 clearTimeout(timeoutId);
详解:
应用场景:
setInterval 类似于 setTimeout,但它会每隔指定的毫秒数重复调用一个函数,直到被手动停止。
function repeatedAlert() { alert('This is repeating every 2 seconds!'); } let intervalId = setInterval(repeatedAlert, 2000); // 可以在任何时候停止定时器 clearInterval(intervalId);
详解:
应用场景:
requestAnimationFrame 是专门针对网页动画的一种高级API,它告诉浏览器你希望执行一个动画,并请求浏览器在下次重绘之前调用指定的回调函数。
function animate(currentTime) { // 动画代码,currentTime 参数表示当前时间点 // ... // 请求下一帧动画 requestAnimationFrame(animate); } // 开始动画 requestAnimationFrame(animate);
详解:
应用场景:
执行时机:
重复性:
性能和准确性:
在实现动画或周期性任务时,应优先考虑使用 requestAnimationFrame,因为它能更好地适应各种设备的刷新率,实现更流畅的动画效果。而对于非视觉相关的简单延时任务或固定间隔任务,setTimeout 和 setInterval 更为合适,但需要注意它们的时间精度问题,并合理控制任务执行以防止阻塞UI线程。