Javascript函数执行实时时钟新分钟
Javascript function execution on real time clock new minute
我正在寻找一种高效(非连续轮询)的方法,以便在实时时钟转到新分钟时执行函数。我当前的代码使用setInterval每60秒调用一次函数——但在实践中存在一些滞后,函数平均在60.2秒左右被调用。这将导致在我正在开发的过程监控系统中累积错误。
有没有人有一个聪明的代码,调用一个函数在实时时钟触发的定期间隔?
编辑:我被提醒到一个方法,通过检查每次调用函数的时间来补偿错误,并为下一次调用补偿setInterval值。这让我更接近——但我真正想要的是一个方法,根据实时时钟在新的一分钟开始时调用一个函数…
是的,如果间隔1分钟使用setInterval
,它最终会开始漂移,正如您所观察到的那样。但是,您不必连续轮询:您只需要使用对setTimeout
的链式调用。每个人都在与时间赛跑。有时超时是59999,有时是59997,等等。但它将永远与时钟保持同步。
function everyMinuteOnTheMinute() {
setTimeout(function() {
var d = new Date();
console.log(d.getMinutes() + " (" + d.valueOf() % 1000 + ")");
// your "every minute" code goes here
everyMinuteOnTheMinute();
}, 60000 - Date.now() % 60000);
}
您可以通过添加回调将其变为通用实用程序:
function everyMinuteOnTheMinute(cb) {
setTimeout(function() {
cb();
everyMinuteOnTheMinute(cb);
}, 60000 - Date.now() % 60000);
}
当你有代码时,你需要每分每秒地运行,只需使用实用程序函数:
everyMinuteOnTheMinute(function() {
console.log("Whee, I'm happening every minute on the minute!");
});
相关文章:
- Javascript倒计时计时器倒计时未正确更新秒/分钟
- 如何在不活动5分钟后更改页面位置
- 每小时倒计时一次,但以30分钟为单位
- 角度在60多分钟内路线问题
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- 制作一个按钮倒计时计时器,该计时器将在5分钟后永久禁用,即使在页面刷新时也应保持禁用状态
- 如何在javascript中将秒转换为分钟和小时
- 如何使用javascript将秒转换为分钟.
- 如何将分钟格式化为小时和分钟,但仅显示小时(如果's>60分钟
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 引导时间选择器在增加或减少小时和分钟的同时获取 NaN
- Moment.js unix时间戳,以分钟为单位显示以前的时间
- AngularJS-检测到n分钟内没有任何操作并进入默认状态
- 将音频第二次转换为分钟和秒格式
- 视频暂停超过1分钟后重定向到新页面
- 计算JavaScript中的时间差异(天+小时+分钟+秒)
- 根据小时和分钟更改 CSS
- 常量脚本 -> 更改 src iframe (1 分钟, 5分钟) + jQuery
- javascript将分钟添加到新日期();在使用对象之前
- Javascript函数执行实时时钟新分钟