You can detect disruptions in the JS timeline (e.g. laptop sleep, alert windows that block JS excecution, debugger
statements that open the debugger) by comparing change in wall time to expected timer delay. For example:
var SAMPLE_RATE = 3000; // 3 seconds
var lastSample = Date.now();
function sample() {
if (Date.now() - lastSample >= SAMPLE_RATE * 2) {
// Code here will only run if the timer is delayed by more 2X the sample rate
// (e.g. if the laptop sleeps for more than 3-6 seconds)
}
lastSample = Date.now();
setTimeout(sample, SAMPLE_RATE);
}
sample();
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…