您可以这样包装
window.setTimeout,我认为这与您在问题中建议的内容类似:
var Timer = function(callback, delay) { var timerId, start, remaining = delay; this.pause = function() { window.clearTimeout(timerId); remaining -= Date.now() - start; }; this.resume = function() { start = Date.now(); window.clearTimeout(timerId); timerId = window.setTimeout(callback, remaining); }; this.resume();};var timer = new Timer(function() { alert("Done!");}, 1000);timer.pause();// Do some stuff...timer.resume();


