03. async/await

async/await

async/await 문법은 ES8에 ν•΄λ‹Ήν•˜λŠ” λ¬Έλ²•μœΌλ‘œμ„œ, Promise λ₯Ό λ”μš± μ‰½κ²Œ μ‚¬μš© ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.

기본적인 μ‚¬μš©λ²•μ„ μ•Œμ•„λ΄…μ‹œλ‹€.

const sleep = (ms) => {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function process() {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”!');
    await sleep(1000);
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€.!');
}

process();
// κ²°κ³Ό)
μ•ˆλ…•ν•˜μ„Έμš”!
λ°˜κ°‘μŠ΅λ‹ˆλ‹€.!

async/await 문법을 μ‚¬μš©ν•  λ•Œμ—λŠ”, ν•¨μˆ˜λ₯Ό μ„ μ–Έ ν•  λ•Œ ν•¨μˆ˜μ˜ μ•žλΆ€λΆ„μ— async ν‚€μ›Œλ“œλ₯Ό λΆ™μ—¬μ£Όμ„Έμš”. 그리고 Promise 의 μ•žλΆ€λΆ„μ— await 을 λ„£μ–΄μ£Όλ©΄ ν•΄λ‹Ή ν”„λ‘œλ―ΈμŠ€κ°€ λλ‚ λ•ŒκΉŒμ§€ κΈ°λ‹€λ Έλ‹€κ°€ λ‹€μŒ μž‘μ—…μ„ μˆ˜ν–‰ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„ μ½”λ“œμ—μ„œλŠ” sleep μ΄λΌλŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ νŒŒλΌλ―Έν„°λ‘œ λ„£μ–΄μ€€ μ‹œκ°„ 만큼 κΈ°λ‹€λ¦¬λŠ” Promise λ₯Ό λ§Œλ“€κ³ , 이λ₯Ό process ν•¨μˆ˜μ—μ„œ μ‚¬μš©ν•΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜μ—μ„œ async λ₯Ό μ‚¬μš©ν•˜λ©΄, ν•΄λ‹Ή ν•¨μˆ˜λŠ” κ²°κ³Όκ°’μœΌλ‘œ Promise λ₯Ό λ°˜ν™˜ν•˜κ²Œ λ©λ‹ˆλ‹€. λ”°λΌμ„œ λ‹€μŒκ³Ό 같이 μ½”λ“œλ₯Ό μž‘μ„± ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

async ν•¨μˆ˜μ—μ„œ μ—λŸ¬λ₯Ό λ°œμƒ μ‹œν‚¬λ•Œμ—λŠ” throw λ₯Ό μ‚¬μš©ν•˜κ³ , μ—λŸ¬λ₯Ό μž‘μ•„λ‚Ό λ•Œμ—λŠ” try/catch 문을 μ‚¬μš©ν•©λ‹ˆλ‹€.

EX1)

new Promise 둜 μ •μ˜ ν•˜λŠ” μ½”λ“œ

then catch μ‹€ν–‰ν•˜λŠ” μ½”λ“œ

ES8버전 async await μ‹€ν–‰ν•˜λŠ” μ½”λ“œ

840B
Open
async.js μ˜ˆμ‹œ

Last updated

Was this helpful?