발생하기 전에 취소 / kill window.setTimeout ()


194

예를 들어 아래 줄을 사용하여 상태를 지우는 곳이 몇 군데 있습니다. 이 중 몇 초 동안 10 초 이상 행 아웃이 발생하며 사용자가 클릭 주위를 클릭하면 작업이 잘못된 시간 간격으로 발생할 수 있습니다.

window.setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

일부 jQuery 또는 JavaScript 코드로 이것을 취소하거나 종료 할 수 있습니까? 그래서이 프로세스가 멈추지 않습니까?

답변:


375
var timer1 = setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

clearTimeout(timer1)

101
window는 전역 네임 스페이스의 이름 일 뿐이므로 실제로는 필요하지 않습니다 (setTimeout 또는 clearTimeout).
Matthew Crumley

7
setTimeout에 대한 첫 번째 매개 변수는 함수이고 'removeStatusIndicator ()'는 함수이므로 다음과 같이 간단히 수행하면 성능이 떨어지고 유형이 줄어들 수 있습니다. var timer1 = setTimeout (removeStatusIndicator, statusTimeout); 이것은 중첩 된 함수 호출을 피합니다.
HarleyDave

5
window.clearTimeout(timer1)Node.js.에서 작동하지 않습니다 어느 단지 사용 clearTimeout(timer1)또는global.clearTimeout(timer1)
CL22

2
@ user1944491 이중 호출은 없습니다 : @HarleyDave가 작성했습니다 setTimeout(removeStatusIndicator, ...). 즉, 함수 removeStatusIndicator가 호출되지 않습니다.
Frerich Raabe 님이

3
@ user1944491의 말을 무시하십시오. 잘못되었습니다. setTimeout에 전달 된 함수는 두 번 호출되지 않습니다. Chrome은 동작을 변경하지 않았으며, setTimeout( func(), 0 )대신 에 함수를 호출하여 문제를 해결했을 가능성이 높습니다.setTimeout( func, 0 )
Sethi

2

window.clearTimeout ()은 달성하려는 작업을 수행해야합니다.


6
답을 설명하고 몇 가지 예를 제시하십시오. 좋은 대답은 그것이 OP뿐만 SO 미래의 방문자뿐만 아니라, 같은 방식으로 이루어졌다 왜 항상 일이 있었는지에 대한 설명을하고 있습니다.
B001 ᛦ

4
+1은 위의 설명이 절대적으로 관련이 없으며 무작위로 보입니다. 대답은 절대적으로 괜찮아 보입니다. 나중에 게시되었으므로 이미 제공된 대답의 "복사 붙여 넣기"와 비슷합니다.
vir us
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.