발생하기 전에 취소 / 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.