ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Recent Posts
02-01 21:40

Today
Total

Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

์—ฐ์˜ ๊ธฐ๋ก ๐Ÿช

[JavaScript] ํ•จ์ˆ˜ ์ •๋ฆฌ 2 - ํƒ€์ด๋จธํ•จ์ˆ˜, ์ฝœ๋ฐฑ(Callback) ํ•จ์ˆ˜,๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฐฉ์‹ ๋ณธ๋ฌธ

WEB/HTML+CSS+JS

[JavaScript] ํ•จ์ˆ˜ ์ •๋ฆฌ 2 - ํƒ€์ด๋จธํ•จ์ˆ˜, ์ฝœ๋ฐฑ(Callback) ํ•จ์ˆ˜,๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฐฉ์‹

kite707 2021. 7. 8. 00:52

ํƒ€์ด๋จธ ํ•จ์ˆ˜

    • setTimeout(ํ•จ์ˆ˜,์‹œ๊ฐ„) : ์ผ์ • ์‹œ๊ฐ„ ํ›„ ํ•จ์ˆ˜ ์‹คํ–‰
    • setInterval(ํ•จ์ˆ˜,์‹œ๊ฐ„) : ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋งˆ๋‹ค ํ•จ์ˆ˜ ์‹คํ–‰
    • clearTimeout() : ์„ค์ •๋œ Timeout ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒ
    • clearInterval() : ์„ค์ •๋œ Intervalํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒ
//setTimeout, clearTimeout ์‚ฌ์šฉ ์˜ˆ์ œ
const timer = setTimeout(() => {console.log("HI!")},3000)

const h1El=document.querySelector('h1')
h1El.addEventListener('click', () => {
    clearTimeout(timer)
})

 

3์ดˆ ๋’ค HI!๊ฐ€ ์ฝ˜์†”์ฐฝ์— ์ถœ๋ ฅ๋œ๋‹ค.

 

Timeout๋ฉˆ์ถ”๊ธฐ ๋ถ€๋ถ„์„ ๋ˆ„๋ฅด๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

//setInterval, clearInterval ์‚ฌ์šฉ ์˜ˆ์ œ
const interval=setInterval(() => {console.log("์•ˆ๋…•")},1000)

const h2El=document.querySelector('h2')
h2El.addEventListener('click',() => {
    clearInterval(interval)
})

1์ดˆ๋งˆ๋‹ค ์•ˆ๋…•์ด ๊ณ„์† ์ถœ๋ ฅ๋œ๋‹ค.(ํ˜„์žฌ๋Š” 9๋ฒˆ ์ถœ๋ ฅ)
Interval ๋ฉˆ์ถ”๊ธฐ ๋ถ€๋ถ„์„ ๋ˆ„๋ฅด๋ฉด ๋”์ด์ƒ ์ˆซ์ž๊ฐ€ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

์ฝœ๋ฐฑ(Callback)

์ฝœ๋ฐฑ : ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜
์˜ˆ๋ฅผ๋“ค์–ด setInterval(ํ•จ์ˆ˜, ์‹œ๊ฐ„) ์—์„œ 'ํ•จ์ˆ˜'๋ฅผ ์ฝœ๋ฐฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฐฉ์‹ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. 

๋น„๋™๊ธฐ ๋ฐฉ์‹ : ํŠน์ • ์ฝ”๋“œ์˜ ์—ฐ์‚ฐ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ํŠน์„ฑ

์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. 

//์˜๋„๋Š” ์ฝ˜์†”์ฐฝ์— 3์ดˆ๋’ค kite๋ฅผ ์ถœ๋ ฅํ•œ ๋’ค, Done!์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
function timeout(){
    setTimeout(() => {
        console.log('kite!')
    },3000)
}

function printer(){
    console.log('Done!')
}
timeout();
printer();

๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ์‹คํ–‰๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. Done!์ด ๋จผ์ € ์ถœ๋ ฅ๋˜๊ณ  ์ดํ›„ kite๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. ์ฆ‰ timeout()ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „์— printer()ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

function timeout(cb){
    setTimeout(() => {
        console.log('kite!')
        cb()
    },3000)
}

timeout(() => {
    console.log('Done!')
})

์˜๋„ํ•œ๋Œ€๋กœ ๊ฒฐ๊ณผ๊ฐ€ ์ž˜ ๋‚˜์™”๋‹ค.