首页  >  文章  >  web前端  >  JavaScript 如何控制超时执行并确定剩余时间?

JavaScript 如何控制超时执行并确定剩余时间?

Susan Sarandon
Susan Sarandon原创
2024-10-22 20:47:12291浏览

How Can I Control Timeout Execution and Determine Remaining Time in JavaScript?

JavaScript 中的暂停和恢复超时

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn