使用 JavaScript 时,可能需要控制异步操作的流程,例如超时。在这里,我们探索暂停和恢复活动超时的方法,以及检索当前超时的剩余时间。
要暂停超时,您可以使用包装器拦截 window.setTimeout 调用并提供必要功能的函数。包装函数 Timer 以回调函数和延迟作为参数,并处理剩余时间的暂停、恢复和跟踪。
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();
};
要使用此包装器,请实例化一个 Timer 对象并根据需要调用其暂停()和恢复()方法。
获取剩余时间当前超时的时间,一种方法是存储设置超时时的开始时间并计算当前时间与暂停时的开始时间之间的差。
var start = Date.now();
var t = setTimeout("dosomething()", 5000);
var remaining = (start 5000) - Date.now();
但是,需要注意的是,如果超时已暂停并恢复,则此计算可能不准确。在前面提供的 Timer 包装函数中,剩余时间被跟踪并相应更新,为检索剩余时间提供了更可靠的方法。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3