λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🌱 CS Study/μžλ°”μŠ€ν¬λ¦½νŠΈ

μ½œλ°±ν•¨μˆ˜, μ½œλ°±μ§€μ˜₯

by HelloRabbit 2023. 2. 16.
728x90

Goal

1. μ½œλ°±ν•¨μˆ˜ κ°œλ… μ΄ν•΄ν•˜κΈ°
2. μ½œλ°±μ§€μ˜₯μ—μ„œ λ²—μ–΄λ‚  수 μžˆλŠ” 방법 μ•Œμ•„λ³΄κΈ°

 

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

  • μ½œλ°±ν•¨μˆ˜λž€ κ°„λ‹¨ν•˜κ²Œ μ–˜κΈ°ν•˜μžλ©΄ μ½”λ“œκ°€ μ™„λ£Œλ˜λ©΄ μ‹€ν–‰λ˜λŠ” 뢀뢄이닀
  • λΉ„λ™κΈ°λ‘œ μ²˜λ¦¬λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λ“€μ€ μ½œλ°±ν•¨μˆ˜λ₯Ό ν•˜λ‚˜μ”© 가지고 μžˆμ–΄μ„œ Web APIμ—μ„œ μ‹€ν–‰λœ 비동기 ν•¨μˆ˜λ“€μ΄ μ–Έμ œ λλ‚¬λŠ”μ§€ μ•Œ 수 μžˆλ‹€
  • Web APIμ—μ„œ λλ‚œ 비동기 ν•¨μˆ˜λ“€μ˜ μ½œλ°±ν•¨μˆ˜λ“€μ΄ μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ—μ„œ μ‹€ν–‰λ˜λ„λ‘ 이벀트 루프(event loop)κ°€ ν•˜λ‚˜μ”© μ²˜λ¦¬ν•œλ‹€

 

μ½œλ°±μ§€μ˜₯μ΄λž€?

  • μ½œλ°±ν•¨μˆ˜ μ•ˆμ—
    • μ½œλ°±ν•¨μˆ˜ μ•ˆμ—
      • μ½œλ°±ν•¨μˆ˜ μ•ˆμ—
        • μ½œλ°±ν•¨μˆ˜ μ•ˆμ— …
  • μ—¬λŸ¬ μ½œλ°±ν•¨μˆ˜λ“€μ΄ κ΄„ν˜Έ μ•ˆμ— κ΄„ν˜Έ μ•ˆμ— κ΄„ν˜Έ μ•ˆμ— 계속 λ“€μ–΄κ°€ μžˆλŠ” μ½”λ“œ ν˜•νƒœλ₯Ό μ½œλ°±μ§€μ˜₯이라고 ν•œλ‹€
  • 이런 경우 μ½”λ“œμ˜ 가독성도 떨어지고 μ‹€μˆ˜ μœ„ν—˜λ„ 컀진닀

 

μ½œλ°±μ§€μ˜₯ λŒ€μ²˜ 방법

Promise (ES6 버전뢀터)

    • 비동기 ν•¨μˆ˜λ“€μ΄ ν”„λ‘œλ―ΈμŠ€ 객체λ₯Ό λ°˜ν™˜ν•˜κ²Œ λ˜λŠ”λ° .then()을 μ΄μš©ν•΄μ„œ ν•œ ν•¨μˆ˜κ°€ λλ‚˜λ©΄ κ·Έ 결과물둜 μ–΄λ–€ μž‘μ—…μ„ 할지 μ•Œλ €μ£ΌλŠ” μ½œλ°±μ„ 넣어쀄 수 있음
    • .then()으둜 μ΄μ–΄μ€˜μ„œ 비동기 ν•¨μˆ˜λ“€μ„ 순차적으둜 μ²˜λ¦¬ν•  수 있음!
    • μ½œλ°±μ§€μ˜₯ λ³΄λ‹€λŠ” μ’€ 더 μ§κ΄€μ μž„

Async/Await (ES7 버전뢀터)

  • Promise둜 μž‘μ„±ν•œ μ½”λ“œλ“€μ„ μ’€ 더 κ°„κ²°ν•˜κ³  μ§κ΄€μ μ΄κ²Œ μ‹€ν–‰ν•  수 있음
  • Promise둜 μ •μ˜ν•œ ν•¨μˆ˜ μ•žμ— asyncλ₯Ό μ“°λ©΄ 비동기 ν•¨μˆ˜λ₯Ό 동기 μž‘μ—…μ²˜λŸΌ μž‘μ„±ν•  수 있게 됨
  • μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜λ“€ μ•žμ— await을 μ“°λ©΄ κ·Έ ν•¨μˆ˜κ°€ λλ‚ λ•ŒκΉŒμ§€ κ·Έ λ‹€μŒμœΌλ‘œ λ„˜μ–΄κ°€μ§€ μ•ŠμŒ (동기 ν•¨μˆ˜μΈκ±°μ²˜λŸΌ)
  • λ‚΄λΆ€ λ™μž‘μ€ 비동기적 μž‘μ—…μ΄μ§€λ§Œ 동기 μ½”λ“œμΈκ±°μ²˜λŸΌ μ‰½κ²Œ 순차적으둜 μž‘μ„±μ΄ κ°€λŠ₯!

 

 

 

'🌱 CS Study > μžλ°”μŠ€ν¬λ¦½νŠΈ' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

비동기와 동기  (0) 2023.02.15

λŒ“κΈ€