Frontend๐ŸŽจ/JavaScript๐Ÿ’›, TypeScript๐Ÿ’™

์ฝœ๋ฐฑ ํ•จ์ˆ˜(callback function) ์ •๋ฆฌํ•˜๊ธฐ

JanuDev 2025. 7. 9. 17:58

์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์ฐพ์•„๋ณด๋ฉด "๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋˜์–ด ํ•ด๋‹น ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜"๋ผ๊ณ  ํ•˜๋Š”๋ฐ... ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ์†”์งํžˆ ์•Œ์•„๋“ฃ๋‚˜?

๊ทธ๋ž˜์„œ Claude์”จ์—๊ฒŒ ๋ฌผ์–ด๋ดค๋Š”๋ฐ,

"๋‚˜์ค‘์— ์‹คํ–‰ํ•ด ๋‹ฌ๋ผ๊ณ  ๋งก๊ฒจ๋†“์€ ํ•จ์ˆ˜"

๋ผ๊ณ  ๊ฐ„๋‹จํžˆ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ.

 

button.onclick = function(){
  alert("๋ฒ„ํŠผ์ด ํด๋ฆญ๋จ!")
}

์—ฌ๊ธฐ์„œ alert("๋ฒ„ํŠผ์ด ํด๋ฆญ๋จ")์„ ํฌํ•จํ•œ function์ด ๋ฐ”๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ผ๊ณ ....

์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š”, ๋ฐ”๋กœ ์ „ํ˜•์ ์ธ ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ธ setTimeout์ด๋‹ค.

setTimeout(function(){
  console.log("3์ดˆ ์ง€๋‚ฌ์–ด")
}, 3000)

๋‚ด๊ฐ€ ํ—ท๊ฐˆ๋ฆด๊นŒ๋ด ์„ค๋ช…ํ•˜๋Š”๊ฑด๋ฐ,,,, setTimeout์€

setTimeout(()=>{
 // ์—ฌ๊ธฐ์— ์‹คํ–‰๋  ํ•จ์ˆ˜ ๋‚ด์šฉ ์ž‘์„ฑ
}, ๋ฐ€๋ฆฌ์„ธ์ปจ์ดˆ)

์ธ๋ฐ, ๋ญ function(){}๋‚˜ ()=>{}(ํ™”์‚ดํ‘œ ํ•จ์ˆ˜)๋‚˜ ๋‘˜์€ ๋˜‘๊ฐ™์€๊ฑฐ๋‹ˆ๊นŒ...

 

์–ด์จŒ๋“  ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ ํฌ์ธํŠธ๋Š”

  1. ๋‚ด๊ฐ€ ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Œ = ์‹œ์Šคํ…œ์ด ์•Œ์•„์„œ ํ˜ธ์ถœํ•จ
  2. ํŠน์ • ์ƒํ™ฉ์ด ๋˜๋ฉด ์‹คํ–‰๋จ(์ด๋ฒคํŠธ ๋ฐœ์ƒ, ์‹œ๊ฐ„ ๊ฒฝ๊ณผ ๋“ฑ)
  3. ๋ฏธ๋ฆฌ ์ค€๋น„ํ•ด ๋†“์€ ํ•จ์ˆ˜ "์ด๋Ÿฐ ์ƒํ™ฉ์ด ๋˜๋ฉด ์ด๊ฑธ ํ•ด์ค˜"

๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ฒ ๋‹ค!

 

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๋งŽ์ด ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ œ ์ต์ˆ™ํ•ด์กŒ๋Š”๋ฐ ์ฝœ๋ฐฑํ•จ์ˆ˜๋Š” ํ˜•ํƒœ๋งŒ ๋ด๋„ ์—ฅ ์ด๊ฒŒ ๋ญ์ง€? ํ•˜๊ณ  ๊ธด๊ฐ€๋ฏผ๊ฐ€ํ•˜๋Š” ์ƒํ™ฉ์ด ๋งŽ์•„์„œ....

๊ทธ๋ž˜์„œ Claude์”จ์—๊ฒŒ ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ํ˜•ํƒœ๋ฅผ ๋ฌผ์–ด๋ดค๋‹ค. ์ต์ˆ™ํ•ด์ง€๋ฉด ์ด์ œ ์ด๋ ‡๊ฒŒ ์ •๋ฆฌ ์•ˆํ•ด๋„ ์•Œ๊ฒ ์ง€..

 

1. ํ•จ์ˆ˜ ์„ ์–ธ์‹ Function Declaration

function handleOpen(){
  connected.value = true
}

ws.value.open = handleOpen

 

2. ํ•จ์ˆ˜ ํ‘œํ˜„์‹ Function Expression

// ์ต๋ช… ํ•จ์ˆ˜(์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜)
ws.value.onopen = function(){
  connected.value = true
}  

// ๊ฐ€๋ช… ํ•จ์ˆ˜
ws.value.onopen = function handleOpen(){
  connected.value = true
}

 

3. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ Arrow Function  

ws.value.onopen = () => {
  connected.value = true
}

// ํ•œ ์ค„์ผ ๋•Œ๋Š” ์ค‘๊ด„ํ˜ธ ์ƒ๋žต
ws.value.onopen = () => connected.value = true

// ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ
ws.value.onmessage = (event) => {
  console.log(event.data)
}

// ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ผ ๋•Œ ๊ด„ํ˜ธ ์ƒ๋žต
ws.value.onmessage = event => {
  console.log(event.data)
}

(+ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ž€? ์—ฌ๊ธฐ์„œ ์ฐธ๊ณ ํ• ๊ฒƒ)

 

๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” ๋ฐฉ์‹์€ ํ•จ์ˆ˜ ํ‘œํ˜„์‹๊ณผ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์ด๋‹ค. ๋‚˜๋„ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์—์„œ ๋น„์Šทํ•˜๊ฒŒ ๋ณธ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ ...