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

개발

μžλ°”μŠ€ν¬λ¦½νŠΈ 동기와 비동기

#. λ™κΈ°λŠ” μš”μ²­μ„ 보낸 ν›„ 응닡을 λ°›μ•„μ•Όμ§€λ§Œ λ‹€μŒ λ™μž‘μ΄ μ΄λ£¨μ–΄μ§€λŠ” 방식이닀. 즉 A μš”μ²­ ν›„ 응닡을 받을 λ•ŒκΉŒμ§€ λ‹€μŒ B λ™μž‘μ€ 싀행될 수 μ—†λŠ” 것이닀. λ™κΈ°λŠ” λ™μ‹œμ— μΌμ–΄λ‚œλ‹€λŠ” λœ»μ΄λ‹€. λ”°λΌμ„œ λ™κΈ°λŠ” 전체 μž‘μ—…μ˜ 흐름이 ν•˜λ‚˜μ˜ 쀄기에 따라 순차적으둜 μ‹€ν–‰λœλ‹€κ³  μƒκ°ν•˜μž! 

 

#. λΉ„λ™κΈ°λŠ” μš”μ²­μ„ μ¦‰μ‹œ μ²˜λ¦¬ν•˜μ§€ μ•Šμ•„λ„ κ·Έ λŒ€κΈ° μ‹œκ°„λ™μ•ˆ(μ‘λ‹΅μ˜€κΈ° μ „κΉŒμ§€μ˜ μ‹œκ°„) λ‹€λ₯Έ λ™μž‘μ΄ μ΄λ£¨μ–΄μ§€λŠ” 방식이닀. 즉 C μš”μ²­ ν›„ 응닡 받을 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬λŠ” 것이 μ•„λ‹Œ λ‹€μŒ B λ™μž‘λ„ λ°”λ‘œ μ‹€ν–‰μ‹œν‚€λŠ” 것이닀. λ”°λΌμ„œ λΉ„λ™κΈ°λŠ” 전체 μž‘μ—…μ˜ 흐름이 ν•˜λ‚˜μ˜ 큰 쀄기 μ•ˆμ—μ„œ μ—¬λŸ¬ 갈래둜 λ‚˜λ‰˜μ—ˆλ‹€κ°€ λ‹€μ‹œ 큰 μ€„κΈ°λ‘œ λͺ¨μ΄λŠ” λ³‘λ ¬μ μœΌλ‘œ μ‹€ν–‰λœλ‹€κ³  μƒκ°ν•˜μž!

 

#. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 단일 μŠ€λ ˆλ“œ, λ™κΈ°μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€. 즉 ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€. ν•œ μž‘μ—…μ΄ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ λ‹€λ₯Έ μž‘μ—…μ€ μ‹€ν–‰ν•˜μ§€ μ•Šμ€ μ±„λ‘œ μžμ‹ μ˜ μ°¨λ‘€λ₯Ό κΈ°λ‹€λ¦°λ‹€. 그런데 μ΄λŸ¬ν•œ 동기적인 방식은 μ›Ή ν™˜κ²½μ—μ„œ λ„ˆλ¬΄ λ§Žμ€ λŒ€κΈ° μ‹œκ°„μ„ λ°œμƒμ‹œν‚¨λ‹€. μˆ˜λ§Žμ€ 데이터λ₯Ό λΉ λ₯΄κ²Œ μ£Όκ³  λ°›κΈ° μœ„ν•΄μ„  ν•œ λ²ˆμ— μ—¬λŸ¬κ°œμ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλŠ” 비동기적인 방식을 효율적으둜 잘 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

#. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 비동기 κ΅¬ν˜„ 방식 세가지
1) 콜백 ν•¨μˆ˜ : νŠΉμ • ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λ˜λŠ” ν•¨μˆ˜λ₯Ό 콜백 ν•¨μˆ˜λΌκ³  ν•œλ‹€. 콜백 ν•¨μˆ˜λ‘œ 비동기 κ΅¬ν˜„ μ‹œ ν•¨μˆ˜ 속에 ν•¨μˆ˜, 또 ν•¨μˆ˜ 속에 ν•¨μˆ˜μΈ ꡬ쑰둜 가독성이 쒋지 μ•Šκ³  μ½”λ“œ κ΄€λ¦¬ν•˜κΈ°μ— 맀우 μ–΄λ ΅κ²Œ λœλ‹€ (예: 콜백 지μ˜₯). 

2) Promise : .then() λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ 콜백 ν•¨μˆ˜μ™€ κΈ°λŠ₯은 λ™μΌν•˜μ§€λ§Œ 훨씬 κ°„κ²°ν•˜κ³  가독성이 쒋은 μ½”λ“œλ₯Ό 지 수 있게 λœλ‹€. promiseμ—λŠ” pending, fulfilled, rejected 세가지 μƒνƒœκ°€ 있고, 콜백 ν•¨μˆ˜μ˜ 인자둜 resolve와 rejectλ₯Ό 받을 수 μžˆλ‹€.

3) async / await : 기쑴의 콜백 ν•¨μˆ˜μ™€ promise의 단점을 보완할 수 μžˆλ‹€. promise λ˜ν•œ 자칫 .then() 지μ˜₯에 빠지기 μ‰¬μš΄λ° 이λ₯Ό λ³΄μ™„ν•˜μ—¬ λ‚˜μ™”λ‹€. μ‚¬μš©ν•  ν•¨μˆ˜ μ•žμ— async ν‚€μ›Œλ“œλ₯Ό 뢙이고 μ„ μ–Έλœ sync ν•¨μˆ˜ μ•ˆμ—μ„œλ§Œ await ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. μ΄λ•Œ await 객체의 λ°˜ν™˜κ°’μœΌλ‘œ promise의 resolveν•¨μˆ˜μ˜ μΈμžκ°’μ΄λ‹€. 그리고 try-catch ꡬ문을 ν•¨κ»˜ μ‚¬μš©ν•œλ‹€λ©΄ 비동기 처리 였λ₯˜ ꡬ문을 μž‘μ„ 수 μžˆλ‹€.