【发布时间】:2014-07-18 23:45:35
【问题描述】:
我有一个后台脚本,它使用 setInterval 命令定期执行网络请求。
我想知道后台脚本是否可以检测操作系统是否进入睡眠或待机状态,以便我可以调整恢复后台脚本时显示的计时器。我了解 setInterval 计时器在睡眠期间暂停基于此答案:What happens to setTimeout when the computer goes to sleep?
代码示例是 background.js
set_start_time();
search_set_int = setInterval(function() {
foo();
// Set the Auto Search Start time for the next run
set_start_time();
}, frequency); // Set interval function
var total_time_left_sec = (frequency/1000) - (current_time_unix - start_time_unix)
谢谢
【问题讨论】:
-
对于您的情况,也许好的解决方案是将间隔减少到少量(如 1000 毫秒),并在剩余时间的情况下向后台页面发送频繁更新。例如。
// do job every 60 seconds var remainedTime = 60; setInterval(function() { if (--remainedTime <= 0) { foo(); remainedTime = 60; } chrome.extension.sendMessage({remainedTime: remainedTime}); }, 1000); -
感谢您的评论。我正在使用这个解决方案,因为它很简单,我认为 Zig Mandel 关于使用 setInterval tick 计算确切经过时间的观点是一个问题,尽管我没有看到它发生。
标签: javascript google-chrome-extension