setTimeout과 setInterval의 차이 setTimeout 시뮬레이션 setInterval

1900 단어
실제로 setTimeout과 setInterval의 문법은 같다.그것들은 모두 두 개의 매개 변수가 있는데, 하나는 실행할 코드 문자열이고, 또 하나는 밀리초 단위의 시간 간격이며, 그 시간이 지나면 그 코드를 실행할 것이다.
그러나 이 두 함수는 차이가 있다. setInterval은 코드를 한 번 실행한 후에 고정된 시간 간격을 지나면 자동으로 코드를 반복하고 setTimeout은 그 코드를 한 번만 실행한다.
setInterval("showTime()", 5000);
setTimeout("showTime()", 5000);
이 두 가지 방법은 매우 비슷해 보일 수도 있고 결과도 비슷할 수도 있다. 그러나 가장 큰 차이점은 setTimeout 방법은 5초마다 showTime 함수를 실행하지 않는다는 것이다. 이것은 setTimeout을 호출할 때마다 5초 후에 showTime 함수를 실행하는 것이다.이것은 showTime 함수의 주체 부분을 2초 안에 집행해야 한다면 전체 함수는 7초마다 한 번씩 집행해야 한다는 것을 의미한다.setInterval은 자신이 호출한 함수에 얽매이지 않고 간단하게 일정 시간마다 그 함수를 반복해서 실행한다.
만약 고정된 시간 간격으로 특정한 동작을 정확하게 실행하도록 요구한다면 setInterval을 사용하는 것이 가장 좋고, 연속 호출로 인해 서로 간섭되는 문제가 발생하지 않으려면, 특히 함수의 호출에 많은 계산과 긴 처리 시간이 필요하다면 setTimeout을 사용하는 것이 가장 좋다.
현재 setTimeout으로 setInterval을 시뮬레이션하여 setInterval 호출 함수를 실행한 후 5초를 기다렸다가 실행합니다
코드는 다음과 같습니다.
        function Log(txt) {
            document.getElementById("msg").innerHTML += txt + "<br/>";
        }
        function showTime() {
            var datatime = new Date();
            Log(datatime.toTimeString());

        }

        window.setInterval = function (callback, delay) {
            var obj = arguments.callee;
            if (obj.timeout == undefined) {
                obj.timeout = new Object();
                obj.timeout.called = true;
            }
            function fn() {
                if (obj.timeout.called) {
                    callback();
                    setTimeout(arguments.callee, delay);
                }
            }
            fn();
            return obj.timeout;
        }

        window.clearInterval = function (fn) {
            fn.called = false;
        }

        result = setInterval(showTime, 1000);
        function btnClick() {
            clearInterval(result);
        }

시정을 환영합니다.

좋은 웹페이지 즐겨찾기