setTimeout / setInterval

라용·2022년 8월 2일
0

인프런 강의 자바스크립트 중급 - 코딩앙마 를 듣고 정리한 내용입니다.

setTimeout 은 일정 시간이 지난 후 함수를 실행시키고 setInterval 은 일정 시간 간격으로 함수를 반복합니다.

function fn(){
	console.log(3)
}
setTimeout(fn, 3000);

// 3000은 3s 초를 의미합니다. 3초 후 로그를 찍습니다.
// setTimeout 은 두개의 매개변수를 받습니다.
// 첫번째는 일정 시간 뒤 실행될 함수, 두번째는 시간입니다.

위 코드는 아래처럼 써도 됩니다. 함수를 전달하지 않고 직접 코드를 넣어도 동일하게 동작합니다.

setTimeout(function(){
	console.log(3)
}, 3000);

인수가 필요하다면 시간 뒤에 넣어줍니다.

function showName(name){
	console.log(name);
}
setTimeout(showName, 3000, 'Mike');

위 함수가 const tId = function.. 로 할당되었으때 clearTimeout(tId); 를 하면 실행이 취소됩니다.


setIntervalsetTimeout 과 비슷하게 써주면 됩니다. 대신 해당 시간마다 반복해서 실행됩니다.

function showName(name){
	console.log(name);
}
const tId = setInterval(showName, 3000, 'Mike');

// 멈추고 싶다면 아래 코드로
clearInterval(tId); 

브라우저는 기본적으로 4ms~ 정도의 대기 시간이 있습니다. 딜레이 시간을 0을 넣어도 아래 코드가 먼저 실행됩니다.

setTimeout(function(){
	console.log(2)
}, 0); // 딜레이 시간을 0을 주어도 아래 식이 먼저 실행된다.
console.log(1);

유저가 접속하면 접속한지 얼마나 지났는지 보여주는 코드를 짜보면,

let num = 0;
function showTime(){
	console.log(`안녕하세요. 접속하신지 ${num++}초가 지났습니다.`);
}
setInterval(showTime, 1000)

// 5초 동안만 보여주고 싶다면 아래처럼 수정

let num = 0;
function showTime(){
	console.log(`안녕하세요. 접속하신지 ${num++}초가 지났습니다.`);
	if(num > 5){ // 5 이상이 되면
		clearInterval(tId); // 반복을 멈춘다.
	}
}
cosnst tId = setInterval(showTime, 1000)
profile
Today I Learned

0개의 댓글