如果我需要不断获取一些新数据,我知道最好的解决方案是 websockets。这样服务器会在有新数据时通知客户端。但为了避免这种情况发生,我需要每五秒调用一次 http 请求。我在这里使用计数器只是为了模拟而不是调用一些 http 服务。let counter = 0;setInterval(() => { console.log(counter); ++counter;},5000)我读到更好的解决方案是 requestAnimationFrame 而不是 setInterval。浏览器对它进行了更优化,并且当选项卡不活动时它会暂停。设置间隔继续触发,并且当选项卡不活动时,这不好。我如何每五秒调用 requestAnimationFrame 中的某个函数?
1 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
要实际上每 5 秒调用一次,您仍然需要(至少)setTimeout. 但有了这个,下面的一些事情就会起作用:
requestAnimationFrame(function run() {
console.log('do something w/o initial delay');
setTimeout(function () {
console.log('do something w/ initial delay');
requestAnimationFrame(run);
}, 5000);
});
添加回答
举报
0/150
提交
取消