使用 JavaScript 时,可能需要控制异步操作(例如超时)的流程。在这里,我们探索暂停和恢复活动超时的方法,以及检索当前超时的剩余时间。
要暂停超时,您可以使用包装器拦截 window.setTimeout 调用并提供必要功能的函数。包装函数 Timer 以回调函数和延迟作为参数,并处理暂停、恢复和跟踪剩余时间。
<code class="javascript">var Timer = function(callback, delay) { var timerId, start, remaining = delay; this.pause = function() { window.clearTimeout(timerId); timerId = null; remaining -= Date.now() - start; }; this.resume = function() { if (timerId) { return; } start = Date.now(); timerId = window.setTimeout(callback, remaining); }; this.resume(); };</code>
要使用此包装器,请实例化一个 Timer 对象并调用其根据需要使用pause()和resume()方法。
要获取当前超时的剩余时间,一种方法是存储设置超时时的开始时间,计算暂停时当前时间与开始时间的差值。
<code class="javascript">var start = Date.now(); var t = setTimeout("dosomething()", 5000); var remaining = (start + 5000) - Date.now();</code>
但是需要注意的是,如果超时暂停又恢复,这个计算可能不准确。在前面提供的 Timer 包装函数中,剩余时间被跟踪并相应更新,为检索剩余时间提供了更可靠的方法。
以上是JavaScript 如何控制超时执行并确定剩余时间?的详细内容。更多信息请关注PHP中文网其他相关文章!