μ½œλ°±ν•¨μˆ˜λž€?

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 콜백 ν•¨μˆ˜λŠ” λ‹€λ₯Έ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λ˜μ–΄ ν•΄λ‹Ή ν•¨μˆ˜μ˜ 싀행이 μ™„λ£Œλœ 후에 ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€. μ΄λŠ” 비동기적인 μž‘μ—…μ„ μ²˜λ¦¬ν•˜κ±°λ‚˜ νŠΉμ • μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ μ²˜λ¦¬ν•  λ‘œμ§μ„ μ •μ˜ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, setTimeout ν•¨μˆ˜λŠ” 콜백 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • μ‹œκ°„μ΄ κ²½κ³Όν•œ 후에 μ‹€ν–‰λ˜λŠ” μ½”λ“œλ₯Ό μ •μ˜ν•  수 있으며 μ½”λ“œ μ œμ–΄κΆŒλ„ ν•¨κ»˜ μœ„μž„ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€.
function performAsyncTask() {
    console.log("비동기 μž‘μ—… μ‹œμž‘");
    setTimeout(() => {
        console.log("비동기 μž‘μ—… μ™„λ£Œ");
    }, 2000);
    console.log("λ‹€λ₯Έ μ½”λ“œ");
}

performAsyncTask();

//"비동기 μž‘μ—… μ‹œμž‘"
//"λ‹€λ₯Έ μ½”λ“œ"
//"비동기 μž‘μ—… μ™„λ£Œ"
μœ„μ˜ μ½”λ“œμ—μ„œ setTimeout ν•¨μˆ˜λ‘œ 비동기 μž‘μ—…μ„ μ‹œμž‘ν•œ 후에 console.log("λ‹€λ₯Έ μ½”λ“œ")κ°€ μ‹€ν–‰λ©λ‹ˆλ‹€. μ΄λ•Œ "λ‹€λ₯Έ μ½”λ“œ" 뢀뢄이 비동기 μž‘μ—…μ΄ μ™„λ£Œλ˜κΈ°λ₯Ό κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ μ‹€ν–‰λ˜λŠ” μ½”λ“œμ΄λ©° 비동기 μž‘μ—…μ˜ μ™„λ£Œλ₯Ό κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ μ‹€ν–‰ μ œμ–΄κΆŒμ΄ λ‹€λ₯Έ μ½”λ“œμ—κ²Œ λ„˜μ–΄κ°‘λ‹ˆλ‹€. 이λ₯Ό 톡해 비동기 μž‘μ—…μ„ μ²˜λ¦¬ν•˜λ©΄μ„œλ„ μ½”λ“œ μ‹€ν–‰μ˜ 흐름을 μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.