[javascript] setInterval과 clearInterval을 사용하는 방법?

function doKeyDown(event) {
    switch (event.keyCode) {
    case 32:
        /* Space bar was pressed */
        if (x == 4) {
            setInterval(drawAll, 20);
        }
        else {
            setInterval(drawAll, 20);
            x += dx;
        }
        break;
    }
}

안녕 모두

반복 해서 호출 하는 루프 를 만들지 않고 drawAll()한 번만 호출하고 싶습니다. 재귀 적 방법을 사용해야 합니까 , 아니면 사용해야 합니까?drawAllclearInterval

또한 사용하도록 알려주십시오 clearInterval. 감사 🙂



답변

setInterval반복 타이머를 설정합니다 . clearInterval발사를 멈추기 위해 전달할 수있는 핸들을 반환합니다 .

var handle = setInterval(drawAll, 20);

// When you want to cancel it:
clearInterval(handle);
handle = 0; // I just do this so I know I've cleared the interval

브라우저에서 핸들은 같지 않은 숫자 여야합니다 0. 따라서 0“타이머 설정 안 함”에 편리한 플래그 값을 만듭니다. (다른 플랫폼은 다른 값을 반환 할 수 있습니다. 예를 들어 NodeJS의 타이머 함수는 객체를 반환합니다.)

에 기능 예약하려면 한 번 불을 사용하는 setTimeout대신. 계속 발사되지 않습니다. ( clearTimeout해당하는 경우 한 번 발사하기 전에 취소 할 수있는 핸들도 반환합니다 .)

setTimeout(drawAll, 20);


답변

clearInterval 은 하나의 옵션입니다.

var interval = setInterval(doStuff, 2000); // 2000 ms = start after 2sec 
function doStuff() {
  alert('this is a 2 second warning');
  clearInterval(interval);
}


답변

setTimeout(drawAll, 20)대신 사용하십시오 . 함수를 한 번만 실행합니다.


답변

저는 전자와 각도를 사용했고

제 경우 setInterval에는 Nodejs 타이머 객체를 반환합니다. 내가 전화했을 때 clearInterval(timerobject)작동하지 않았습니다.

먼저 ID를 가져 와서 clearInterval을 호출해야했습니다.

clearInterval(timerobject._id)

나는 이것으로 많은 시간을 보냈다. 도움이 되었기를 바랍니다.


답변

참고 – 간격을 설정하고 지우는 별도의 기능을 사용하려면 간격 변수에 ‘상대적’또는 ‘한 수준 위’범위에서 모든 변수에 액세스 할 수 있어야합니다.

var interval = null;

function startStuff(func, time) {
    interval = setInterval(func, time);
}

function stopStuff() {
    clearInterval(interval);
}


답변