>  기사  >  웹 프론트엔드  >  JavaScript에서 시간 초과를 효율적으로 일시 중지하고 재개하는 방법은 무엇입니까?

JavaScript에서 시간 초과를 효율적으로 일시 중지하고 재개하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-23 00:18:03941검색

How to Pause and Resume Timeouts in JavaScript Efficiently?

JavaScript 시간 초과 일시 중지 및 재개

JavaScript에서 setTimeouts 작업을 할 때 이를 일시 중지하고 재개하는 기능은 다양한 시나리오에서 유용할 수 있습니다. 지연이 구성되었지만 실행 전 또는 비동기 작업이 완료될 때까지 기다리기 위해 일시 ​​중지가 필요한 상황이 발생할 수 있습니다.

사용자 정의 래퍼를 사용하여 시간 초과 일시 중지 및 재개

현재 시간을 저장하고 남은 기간을 계산하는 대신 일시 중지 및 재개 기능을 제공하는 window.setTimeout 주위에 사용자 정의 래퍼를 생성할 수 있습니다. 이 접근 방식은 더욱 우아하고 재사용 가능한 솔루션을 제공합니다.

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 클래스를 사용하면 필요에 따라 시간 초과를 일시 중지하고 재개할 수 있습니다. 이를 사용하려면 콜백 함수와 지연으로 초기화한 다음 필요에 따라 Pause() 또는 Resume() 메서드를 호출하세요.

예:

var timer = new Timer(function() {
    alert("Done!");
}, 1000);

timer.pause();
// Perform asynchronous operations or other tasks
timer.resume();

참고: 이 사용자 정의 래퍼는 일시 중지된 타이머의 남은 시간을 검색하는 방법을 제공하지 않습니다. 또는 남은 시간을 추적하고 getTimeRemaining() 메소드를 제공하는 보다 포괄적인 래퍼를 구현할 수도 있습니다.

위 내용은 JavaScript에서 시간 초과를 효율적으로 일시 중지하고 재개하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.