Search

async & await

async & await

JavaScript의 비동기 ν”„λ‘œκ·Έλž˜λ°μ„ κ°„νŽΈν•˜κ²Œ λ§Œλ“œλŠ” ν‚€μ›Œλ“œμž…λ‹ˆλ‹€.
β€’
β€’
async
β€’
await

async

async: "비동기" λ˜λŠ” "비동기식"μ΄λΌλŠ” 의미둜 ν•΄μ„λ©λ‹ˆλ‹€. μ˜μ–΄ 단어 asynchronous의 μ€„μž„λ§λ‘œ, λ™μ‹œμ— μΌμ–΄λ‚˜μ§€ μ•ŠλŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

await

await: "기닀리닀" λ˜λŠ” "λŒ€κΈ°ν•˜λ‹€"λΌλŠ” 의미둜 ν•΄μ„λ©λ‹ˆλ‹€. μ˜μ–΄ 동사 awaitμ—μ„œ μœ λž˜ν•œ κ²ƒμœΌλ‘œ, μ–΄λ–€ 일이 μ™„λ£Œλ˜κΈ°λ₯Ό κΈ°λ‹€λ¦¬λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

async

ν•¨μˆ˜ μ„ μ–Έ μ•žμ— λΆ™μ΄λŠ” ν‚€μ›Œλ“œλ‘œ, ν•¨μˆ˜λ₯Ό 비동기 ν•¨μˆ˜λ‘œ μ •μ˜ν•©λ‹ˆλ‹€.
async ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ°˜ν™˜λœ 값은 μžλ™μœΌλ‘œ Promise.resolve()둜 κ°μ‹Έμ§‘λ‹ˆλ‹€. λ”°λΌμ„œ async 둜 ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ©΄, Promise 둜 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

async μ‚¬μš©λ²•

1.
Promise μ‚¬μš©
2.
await μ‚¬μš©

Promise μ‚¬μš©

async function example() { return "Hello, async!"; } example().then(console.log); // "Hello, async!"
JavaScript
볡사

await μ‚¬μš©

async function fetchData() { let response = await fetch('https://api.example.com/data'); let data = await response.json(); return data; }
JavaScript
볡사

await

ν•¨μˆ˜ 호좜 μ•žμ— λΆ™μ΄λŠ” ν‚€μ›Œλ“œλ‘œ, 비동기 ν•¨μˆ˜μ˜ λ°˜ν™˜ κ²°κ³Όλ₯Ό κΈ°λ‹€λ €μ„œ λ°›μ•„μ˜΅λ‹ˆλ‹€.
β€’
async ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©ν•  수 있으며, Promiseκ°€ 해결될 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦½λ‹ˆλ‹€.
β—¦
: await ν‚€μ›Œλ“œλŠ” Promiseκ°€ ν•΄κ²°λ˜λ©΄ κ·Έ 값을 λ°˜ν™˜
β—¦
: Promiseκ°€ κ±°λΆ€λ˜λ©΄ μ—λŸ¬ λ°œμƒ

await μ˜ˆμ‹œμ½”λ“œ

async function getUserData(userId) { try { const response = await fetch(`/user/${userId}`); if (!response.ok) { throw new Error('Network response was not ok'); } const data = await response.json(); return data; } catch (error) { console.error('There was a problem with the fetch operation:', error); } } async function displayUserData(userId) { const userData = await getUserData(userId); console.log(userData); } displayUserData(1);
JavaScript
볡사

async & await μž₯점

β€’
가독성: async/awaitλ₯Ό μ‚¬μš©ν•˜λ©΄ 비동기 μ½”λ“œλ₯Ό 마치 동기 μ½”λ“œμ²˜λŸΌ μž‘μ„±ν•  수 μžˆμ–΄ 가독성이 λ†’μ•„μ§‘λ‹ˆλ‹€.
β€’
μ—λŸ¬ 처리: try...catch 블둝을 μ‚¬μš©ν•˜μ—¬ 비동기 μ½”λ“œμ—μ„œλ„ 동기 μ½”λ“œμ™€ λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ—λŸ¬λ₯Ό μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
β€’
디버깅: async/awaitλ₯Ό μ‚¬μš©ν•˜λ©΄ 콜백 지μ˜₯(callback hell)을 ν”Όν•  수 μžˆμ–΄ 디버깅이 μš©μ΄ν•©λ‹ˆλ‹€.