์ฝ๋ฐฑ(callback)์ ํ๋ก๊ทธ๋๋ฐ์์ ํน์ ์์ ์ด ์๋ฃ๋ ํ์ ํธ์ถ๋๋ ํจ์๋ฅผ ์๋ฏธํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๋๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์์ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์์ ์ด ์๋ฃ๋์์ ๋ ์คํํ ์ฝ๋๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- ๋น๋๊ธฐ ์คํ:
- ์ฝ๋ฐฑ์ ๋น๋๊ธฐ ์์ ์ด ์๋ฃ๋ ํ์ ํธ์ถ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ ์์ฒญ์ด ์๋ฃ๋์๊ฑฐ๋ ํ์ผ ์ฝ๊ธฐ๊ฐ ๋๋ฌ์ ๋, ํด๋น ์์ ์ด ์๋ฃ๋์์์ ์๋ฆฌ๋ ์ฝ๋ฐฑ ํจ์๊ฐ ํธ์ถ๋ฉ๋๋ค.
- ํจ์ ์ธ์๋ก ์ ๋ฌ:
- ์ฝ๋ฐฑ ํจ์๋ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ฉฐ, ์ฃผ๋ก ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ ๋น๋๊ธฐ API์์ ์ฌ์ฉ๋ฉ๋๋ค.
JavaScript์์ ๋น๋๊ธฐ ์์ ์ ์ํํ ๋ ์ฝ๋ฐฑ์ ์ฌ์ฉํ๋ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
function fetchData(callback) {
setTimeout(() => {
const data = "Fetched Data";
callback(data); // ๋ฐ์ดํฐ๊ฐ ์ค๋น๋๋ฉด ์ฝ๋ฐฑ ํธ์ถ
}, 1000); // 1์ด ํ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
}
function processData(data) {
console.log("Processing: " + data); // ์ฝ๋ฐฑ์์ ์ฒ๋ฆฌ
}
// fetchData ํจ์ ํธ์ถ ์ processData๋ฅผ ์ฝ๋ฐฑ์ผ๋ก ์ ๋ฌ
fetchData(processData);
- ์ ์ฐ์ฑ: ์ฝ๋ฐฑ์ ํตํด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ , ๋ค์ํ ์์ ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋น๋๊ธฐ ์ฒ๋ฆฌ: ๋น๋๊ธฐ ์์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ด, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๊ฐ ์ฐจ๋จ๋์ง ์๊ณ ๋ถ๋๋ฝ๊ฒ ๋์ํ๋๋ก ํฉ๋๋ค.
์ฝ๋ฐฑ์ ์ฌ์ฉํ ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, ๋ ์ด์ ํ์ํ์ง ์์ ์ฝ๋ฐฑ์ ๋ํ ์ฐธ์กฐ๋ฅผ ํด์ ํด์ผ ํฉ๋๋ค. ํนํ ์ด๋ฒคํธ ๋ฆฌ์ค๋์ ํจ๊ป ์ฌ์ฉํ ๋๋ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
์ฝ๋ฐฑ์ ํน์ ์์ ์ด ์๋ฃ๋ ํ ํธ์ถ๋๋ ํจ์๋ก, ๋น๋๊ธฐ ์์ ๋ฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์์ ํํ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ , ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.