«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу контролировать выполнение тайм-аута и определять оставшееся время в JavaScript?

Как я могу контролировать выполнение тайм-аута и определять оставшееся время в JavaScript?

Опубликовано 9 ноября 2024 г.
Просматривать:110

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

Приостановка и возобновление таймаутов в JavaScript

При работе с 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();

Однако важно отметить, что если тайм-аут был приостановлен и возобновлен, этот расчет может быть неточным. В функции-оболочке таймера, представленной ранее, оставшееся время отслеживается и соответствующим образом обновляется, обеспечивая более надежный метод получения оставшегося времени.

Заявление о выпуске Эта статья перепечатана по адресу: 1729595660. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3