λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» DEV/Javascript & NodeJS

[Javascript] 비동기, 동기 ν•¨μˆ˜ (Asynchronous, Synchronous) λž€?

by vodkassi 2021. 5. 27.
728x90

✨ Synchronous vs Asynchronous

동기식: μ½”λ“œμ˜ execution 이 μš”μ²­κ³Ό λ™μ‹œμ— μΌμ–΄λ‚˜λ©°, 순차적으둜 μ‹€ν–‰λœλ‹€.

비동기식: μ½”λ“œμ˜ execution 이 μš”μ²­κ³Ό λ™μ‹œμ— μΌμ–΄λ‚˜μ§€ μ•ŠμœΌλ©°, λ³‘λ ¬μ μœΌλ‘œ μ‹€ν–‰λœλ‹€.

 

μ˜ˆμ‹œ)

 

μž‘μ—… λͺ©λ‘:
1. 화면에 μ˜μƒ λͺ©λ‘μ„ λ„μ›ŒλΌ
2. 첫 번째 μ˜μƒμ„ 틀어라
3. ν•˜λ‹¨μ— μΆ”μ²œ μ˜μƒ λͺ©λ‘μ„ λ„μ›ŒλΌ

동기식:
1 μ‹€ν–‰ -> 2 μ‹€ν–‰ -> μ˜μƒ 정보 μš”μ²­ -> μ˜μƒ 정보 μˆ˜μ‹  -> μ˜μƒ 좜λ ₯ -> 3 μ‹€ν–‰ 

비동기식:
1 μ‹€ν–‰ -> 2 μ‹€ν–‰ -> 3 μ‹€ν–‰
        |_ μ˜μƒ 정보 μš”μ²­ -> μ˜μƒ 정보 μˆ˜μ‹  -> μ˜μƒ 좜λ ₯

 

동기식 방법을 λ”°λ₯΄λ©΄ 첫 번째 μ˜μƒμ˜ 데이터가 λͺ¨λ‘ λ“€μ–΄μ˜€κ³ , λκΉŒμ§€ μž¬μƒλ˜κΈ° μ „κΉŒμ§€λŠ” 3을 μ‹€ν–‰ν•  수 μ—†λ‹€.

 

비동기식 방법을 λ”°λ₯Ό 경우, 2κ°€ μ‹€ν–‰λ˜λŠ” μˆœκ°„ λ°μ΄ν„°μ˜ μš”μ²­ μž‘μ—…κ³Ό 3의 싀행이 λ”°λ‘œ 이루어진닀. μ˜μƒ μž¬μƒμ€ 데이터가 λ‹€ λ“€μ–΄μ˜€λŠ” μˆœκ°„ 이루어진닀.

 

✨ AJAXλž€?

Asynchronous Javascript And Xml의 μ•½μžλ‘œ, Javascript λΌμ΄λΈŒλŸ¬λ¦¬μ΄λ‹€. (XML: Extensible Markup Language의 μ•½μžμ΄λ‹€)

AJAX λŠ” JS λ₯Ό μ΄μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ— XML 데이터λ₯Ό μ£Όκ³ λ°›λŠ” 톡신이며, CSR (Client Side Rendering)이 κ°€λŠ₯ν•˜λ„λ‘ ν•΄μ€€λ‹€. μ΄ˆκΈ°μ—λŠ” XML HTTP request object λ₯Ό 톡해 μ΄λ£¨μ–΄μ‘ŒμœΌλ‚˜, μ΄ν›„μ—λŠ” jQuery λ₯Ό ν™œμš©ν•˜κ²Œ λ˜μ—ˆκ³ , ES6λΆ€ν„°λŠ” fetch API κ°€ ν™œμš©λ˜μ—ˆλ‹€.

 

✨ Fetch API λž€?

 

Promise λ₯Ό λ°˜ν™˜κ°’μœΌλ‘œ κ°–λŠ” 톡신 API 이닀.

 

fetch(resource, init(optional)).then(callback)  

// resource = url, init = μ„€μ • 객체 

// init μž‘μ„± μ˜ˆμ‹œ 

const init = { method: 'GET', headers: { 'Content-Type': 'application/json'}, 
credentials: 'same-origin'};

 

참고자료

MDN:Using Fetch

Ajax,Fetch

λŒ“κΈ€