코드
// 가장 마지막에 실행된 함수를 제외 전부 중지
const IntervalId = setInterval(() => console.log('interval'), 1000);
for (let i = 0; i < IntervalId; i++) {
clearInterval(i);
}
const TimeoutId = setTimeout(() => console.log('timeout'), 1000);
for (let i = 0; i < TimeoutId; i++) {
clearTimeout(i);
}
코드 풀이
setInterval, setTimeout은 각 함수를 호출할 때마다 증가하는 수를 아이디로 반환하며 해당 아이디를 사용하여 각 함수를 중지시킬 수 있습니다.
이에 사용되는 함수는 clearInterval, clearTimeout에 해당 아이디를 넣어 중지시킬 수 있습니다.
// 모든 함수 중지
let TimeoutId;
for (let i = 0; i < 100; i++) {
TimeoutId = setTimeout(() => console.log(`timeout ${100 * i}`), 100 * i);
}
for (let i = 0; i <= TimeoutId; i++) {
clearTimeout(i);
}
반복문 상황에서 다수의 함수 호출을 하여도 모든 실행을 중지시켜 중복을 방지할 수 있습니다.