λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

[ν•¨μˆ˜] 콜백(Call back)μ΄λž€?

μ‹œνλ¦¬ν‹°μ§€ν˜Έ 2023. 11. 23.

 

 

μ½œλ°±μ€ μ–΄λ–€ ν•¨μˆ˜λ₯Ό λ‹€λ₯Έ μ½”λ“œμ˜ μΈμˆ˜λ‘œμ„œ λ„˜κ²¨μ£ΌλŠ” μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό λ§ν•œλ‹€.

 

콜백(callback)은 주둜 ν•œ ν•¨μˆ˜κ°€ μ‹€ν–‰ 쀑에 λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κ³ , κ·Έ 호좜된 ν•¨μˆ˜κ°€ μž‘μ—…μ„ μˆ˜ν–‰ν•œ 후에 μ›λž˜ ν•¨μˆ˜λ‘œ λŒμ•„μ™€μ„œ λ‚˜λ¨Έμ§€ μž‘μ—…μ„ μ§„ν–‰ν•˜λ„λ‘ ν•˜λŠ” νŒ¨ν„΄μ„ μ˜λ―Έν•œλ‹€. μ΄λŸ¬ν•œ νŒ¨ν„΄μ€ 비동기 μž‘μ—…μ„ μ²˜λ¦¬ν•˜κ±°λ‚˜ 이벀트 μ²˜λ¦¬μ™€ 같이 λ‹€μ–‘ν•œ μƒν™©μ—μ„œ ν™œμš©λœλ‹€.

콜백 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 일반적인 μ‹œλ‚˜λ¦¬μ˜€λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  1. μ£Όμš” ν•¨μˆ˜(λΆ€λͺ¨ ν•¨μˆ˜ λ˜λŠ” 호좜 ν•¨μˆ˜)κ°€ μ‹œμž‘λ©λ‹ˆλ‹€.
  2. μ£Όμš” ν•¨μˆ˜λŠ” λ‹€λ₯Έ ν•¨μˆ˜(콜백 ν•¨μˆ˜)λ₯Ό ν˜ΈμΆœν•˜κ±°λ‚˜ 이벀트 처리 ν•¨μˆ˜λ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€.
  3. 콜백 ν•¨μˆ˜ λ˜λŠ” 이벀트 처리 ν•¨μˆ˜λŠ” 비동기 μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ±°λ‚˜ 이벀트λ₯Ό λŒ€κΈ°ν•©λ‹ˆλ‹€.
  4. 비동기 μž‘μ—…μ΄ μ™„λ£Œλ˜κ±°λ‚˜ μ΄λ²€νŠΈκ°€ λ°œμƒν•˜λ©΄, 콜백 ν•¨μˆ˜κ°€ ν˜ΈμΆœλ©λ‹ˆλ‹€.
  5. 콜백 ν•¨μˆ˜λŠ” ν•„μš”ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜κ±°λ‚˜ λ‹€μŒ 단계λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.
  6. μ£Όμš” ν•¨μˆ˜κ°€ λ‚˜λ¨Έμ§€ μž‘μ—…μ„ 계속 μ§„ν–‰ν•©λ‹ˆλ‹€.

 

<<λ˜λ‹€λ₯Έ μ˜ˆμ‹œ>>

//콜백 ν•¨μˆ˜ - κΈ°λ³Έ
// Hello jiho λ₯Ό 좜λ ₯ν•˜λŠ” ν•¨μˆ˜ greeting
function greeting(name) {
console.log(`Hello ${name}`);
}
//greeting을 ν™”μ‚΄ν‘œ ν•¨μˆ˜λ‘œ λ³€κ²½
//const greeting = () => console.log(`Hello ${name}`);
//greeting('jiho');

function processUserInput(name, callbackFunction) {
callbackFunction(name);
}

processUserInput('jiho', greeting);

// ν•¨μˆ˜ 2개 κ΅¬ν˜„
// 1. μΏ νŒ‘μ—μ„œ 사과λ₯Ό κΈ°λ‹€λ¦¬λŠ” ν•¨μˆ˜ waitCoupang(appleBox, callback)
// ν•¨μˆ˜μ˜ λ™μž‘: 'μΏ νŒ‘μ—μ„œ ${appleBox}κ°€ λ„μ°©ν–ˆλ‹€'λ₯Ό 좜λ ₯ν•˜λŠ” ν•¨μˆ˜

// 2. bringItToNeighbor(λ³„λ„μ˜ νŒŒλΌλ―Έν„° μ—†μŒ)
// ν•¨μˆ˜μ˜ λ™μž‘: 'μ˜†μ§‘ μ•„μ£Όλ¨Έλ‹ˆμ—κ²Œ 전달 μ™„λ£Œ'λ₯Ό 좜λ ₯ν•˜λŠ” ν•¨μˆ˜

function bringItToNeighbor() {
console.log("μ˜†μ§‘ μ•„μ£Όλ¨Έλ‹ˆμ—κ²Œ 전달 μ™„λ£Œ");
}

function waitCoupang(appleBox, callback) {
console.log(`μΏ νŒ‘μ—μ„œ ${appleBox}κ°€ λ„μ°©ν–ˆλ‹€.`);
callback();
}

waitCoupang('사과', bringItToNeighbor);

const callBack = number => console.log(number);
numbers.forEach(callBack);

λŒ“κΈ€