当电脑进入休眠状态,浏览器的一些持久功能会受到影响(例如 WebSocket 连接中断),有时需要在从休眠状态中恢复过来的时候做一些检查和恢复工作。

解决方案

利用计时器

let lastTime = (new Date()).getTime()

// 可能由于脚本计算量大,或是使用了 alert/confirm 等阻塞线程的函数,的确会有些小误差,可以忽略掉
const THRESHOLD = 15000

setInterval(function() {
  const currentTime = Date.now()
  if (currentTime > (lastTime + THRESHOLD)) {
    // 刚醒来,做点什么呢
  }
  lastTime = currentTime
}, 30000); // 30s 比较保守,可以根据业务需求来调整

参考