๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

javascript/ES6

ES6 javascript : setTimeout vs setInterval - ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง ํ•จ์ˆ˜

728x90

setTimeout vs setInterval
๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• - Promise, Generator ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง ํ•จ์ˆ˜ setTimeout(), setInterval()

setTimeout() setInterval()
์ผ์ • ์‹œ๊ฐ„ "ํ›„์—" ํ•จ์ˆ˜๋ฅผ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰ ์ผ์ •์‹œ๊ฐ„"๋งˆ๋‹ค" ํ•จ์ˆ˜๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰
ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง ์ทจ์†Œ - clearTimeout  ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง ์ทจ์†Œ - clearInterval

 

setTimeout()

-  setTimeout(ํ•จ์ˆ˜๋ช…, ์ง€์—ฐ์‹œ๊ฐ„, ์ธ์ž๊ฐ’) : ์ง€์—ฐํ˜ธ์ถœ, ์‹œ๊ฐ„๋‹จ์œ„๋Š” millisecond, 1000=1์ดˆ , ๊ธฐ๋ณธ๊ฐ’ 0

function testHello(){
    console.log("hello!");
}

//1
testHello();
//2
setTimeout(testHello,4000)
//3
console.log("bye~");

// 1 	-> 3 	-> 2
// hello! -> bye~ -> hello! ์ˆœ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค = ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฐฉ์‹

 

 = ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฐฉ์‹
 : 4์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
 ์ผ๋‹จ setTimeout()์„ ์‹คํ–‰ํ•œ ํ›„, ๋ฐ”๋กœ ๋‹ค์Œ ์ฝ”๋“œ์ธ console.log("bye~")๋กœ ๋„˜์–ด๊ฐ€ ์ถœ๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

function testHello2(t){
    console.log(t);
}
setTimeout(testHello2,2000,"hi~"); // ์ฃผ์˜! ํ•จ์ˆ˜๋ช…๋งŒ ๊ธฐ์žฌ (ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์•„๋‹˜.)
// 2์ดˆ๋’ค์— 'hi~' ์ถœ๋ ฅ

setTimeout(console.log('a'), 4000); //'a' - ์ง€์—ฐ์ด ๋˜์ง€ ์•Š๊ณ , ๋ฐ”๋กœ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋จ.
setTimeout((a)=>console.log(a), 4000, 'a'); //4์ดˆ๋’ค์— 'a' ์ถœ๋ ฅ

 

 

setTimeout ํ˜ธ์ถœ > ํƒ€์ด๋จธ ์‹๋ณ„์ž ๋ฐ˜ํ™˜ > ์ˆซ์ž(number)

const tid=setTimeout((a)=>console.log(a), 4000,"์•ˆ๋…•");
console.log("ํ˜ธ์ถœ >>",tid); //ํ˜ธ์ถœ >> 36105
//4์ดˆ ๋’ค์— '์•ˆ๋…•' ์ถœ๋ ฅ

const ti=setTimeout((a)=>console.log(a), 2000,"aaa");
console.log("ํ˜ธ์ถœ >>",ti); //ํ˜ธ์ถœ >>39340
//2์ดˆ ๋’ค์— 'aaa' ์ถœ๋ ฅ

 

 

setInterval()

// 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฌธ์ž์—ด ์ถœ๋ ฅ
const Iid=setInterval(()=>console.log('korea'), 1000);

//์ค‘์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•
const myStop=(Iid)=>{
    clearInterval(Iid);
}

//์ฆ‰์‹œ ์ค‘์ง€ํ•˜๊ธฐ
myStop(Iid);


//5์ดˆ ๋’ค์— ์ค‘์ง€ํ•˜๊ธฐ (์ง€์—ฐํ˜ธ์ถœ)
//๋ฐฉ๋ฒ• 1
setTimeout(myStop, 5000, Iid);
//๋ฐฉ๋ฒ• 2
setTimeout(()=>{myStop(Iid)},5000);

//ํ‹€๋ฆฐ ๋ฐฉ๋ฒ•
setTimeout(myStop(tid),5000); // ์ฆ‰์‹œ ์ค‘์ง€๋จ.
setTimeout(()=> console.log('aaa'),3000); //1๋ฒˆ๋งŒ ์ถœ๋ ฅ - 'aaa'
setInterval(console.log('setInterval'),2000) //1๋ฒˆ๋งŒ ์ถœ๋ ฅ - ์ฃผ๊ธฐ์ ์ธ ์ถœ๋ ฅx

//์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•
setInterval(()=>console.log('setInterval'),2000) //ํ•จ์ˆ˜๊ฐ€ ์•ˆ์— ์žˆ์„๋•Œ, ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ˜๋ณต์‹คํ–‰

 

๊ณ„์† ์ฆ๊ฐ€ํ•˜๋Š” ๊ฐ’์„ clearInterval() ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์ง€

// 10์ดˆ ๋™์•ˆ, 'ํƒ€์ด๋จธ ์‹๋ณ„์ž' 1์ดˆ๋งˆ๋‹ค ์ถœ๋ ฅํ•˜๊ธฐ
let count=0;
let Iid2=setInterval(()=>{
    console.log(Iid2);
    count++;
    if(count==10){
     clearInterval(Iid2);
    }
},1000)

 

 

์—ฐ์Šต๋ฌธ์ œ ) 2์ดˆ๋งˆ๋‹ค ์ถœ๋ ฅํ•˜๋Š” ์‹œ๊ณ„๋ฅผ ๋งŒ๋“ค์–ด๋ผ!

//๋ฐฉ๋ฒ• 1
function myClock(){
    let d=new Date();
    //์›” return ๊ฐ’์€ --> 0~11, 0๋ถ€ํ„ฐ ์‹œ์ž‘ --> +1
    console.log('ํ˜„์žฌ์‹œ๊ฐ์€', d.getMonth()+1,'์›”',d.getDate(),'์ผ ', d.getHours(),'์‹œ ',d.getMinutes(),'๋ถ„ ', d.getSeconds(),'์ดˆ ์ž…๋‹ˆ๋‹ค.');
}
let clock=setInterval(myClock, 2000);
setTimeout(()=>{clearInterval(clock)}.10000); //10์ดˆ ๋™์•ˆ๋งŒ.


//๋ฐฉ๋ฒ• 2
let cnt=0
function myClock(){
    let d=new Date();
    console.log('ํ˜„์žฌ์‹œ๊ฐ์€', d.getMonth()+1,'์›”',d.getDate(),'์ผ ', d.getHours(),'์‹œ ',d.getMinutes(),'๋ถ„ ', d.getSeconds(),'์ดˆ ์ž…๋‹ˆ๋‹ค.');
	cnt++
    if(cnt!=10){ //20์ดˆ ๋™์•ˆ
    setTimeout(myClock,2000)
    }
}
myClock();
728x90