์๋ฐ์คํฌ๋ฆฝํธ์์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ ์ฃผ์ ๋ฐฉ์์ธ Promise์ async/await์ ๋ํด ๋น๊ตํด๋ณด๋ ค๊ณ ํ๋ค. ํ์ ์์ ์ ํ๋ฉด์ ๋์ ์ฌ์ฉํ๋๋ฐ, ์ ํํ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ์ฐจ์ด์ ๊ณผ ํน์ง์ ๋น๊ตํด๋ณด๋ ค๊ณ ํ๋ค. (๋ ๋ค ES6+ ์ดํ์ ๋์ ๋์๋ค.)
1. ๋ฌธ๋ฒ
- Promise: `.then()`, `.catch()`, `.finally()` ๋ฉ์๋๋ฅผ ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉ.
- async/await: ๋ ๋๊ธฐ์ ์ธ ์ฝ๋ ์คํ์ผ์ด๋ฉฐ `try/catch` ๊ตฌ๋ฌธ์ผ๋ก ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ค.
2. ๊ฐ๋
์ฑ
- Promise: ๋ณต์กํ ๋น๋๊ธฐ ๋ก์ง์์๋ ์ค์ฒฉ๋ `.then()`์ผ๋ก ์ธํด "์ฝ๋ฐฑ ์ง์ฅ"๊ณผ ์ ์ฌํ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค.
- async/await: ์ผ๋ฐ์ ์ผ๋ก ๋ ์ฝ๊ธฐ ์ฌ์ด ์ง๊ด์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
3. ์๋ฌ ์ฒ๋ฆฌ
- Promise: `.catch()` ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- async/await: ์ผ๋ฐ์ ์ธ `try/catch` ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ค.
4. ๋ณ๋ ฌ ์คํ
- Promise: `Promise.all()`, `Promise.race()` ๋ฑ์ ๋ฉ์๋๋ฅผ ํตํด ์ฌ๋ฌ Promise๋ฅผ ๋ณ๋ ฌ ์ฒ๋ฆฌํ ์ ์๋ค.
- async/await: ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํด์๋ ์ถ๊ฐ์ ์ธ ์์
์ด ํ์ํ๋ค. (์: `Promise.all()`๊ณผ ํจ๊ป ์ฌ์ฉ)
5. ๋ธ๋ผ์ฐ์ ์ง์
- Promise: ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์.
- async/await: Promise๋ณด๋ค ๋์ค์ ๋์
๋์ด, ์๋์ ์ผ๋ก ๋ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์.
6. ๊ธฐ๋ฐ ๊ธฐ์
- async/await๋ Promise๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ async ํจ์๋ ํญ์ Promise๋ฅผ ๋ฐํํ๋ค.
Promise์ async/await ์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
// Promise
function fetchData() {
return fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
}
// async/await
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error:', error);
}
}
์ด ์์๋ฅผ ๋ณด๋ฉด, async/await๊ฐ ๋ ๋๊ธฐ์ ์ธ ์ฝ๋ ์คํ์ผ์ ์ ๊ณต ๋ฐ ์๋ฌ ์ฒ๋ฆฌ์ ๋ํด ๋ ์ง๊ด์ ์์ ์ ์ ์๋ค.
๐ธ ์ถ์ฒ ๐ธ
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ JS ] e.stopPropagation ๊ณผ e.preventDefault ์ฐจ์ด ์๊ณ ๋์ด๊ฐ๊ธฐ (0) | 2024.09.08 |
---|---|
[ JS ] Event.stopPropagation์ Event.preventDefault ์ ์ฐจ์ด์ ์์๋ณด๊ธฐ. (0) | 2024.07.14 |
[ TypeScript ] ํ์ ์ ์ํ interface ์ ํํธ ์ฃผ์ ๋ฌ๊ธฐ. (0) | 2023.06.30 |
[TS] ํ๋ก์ ํธ์ tsconfig ์ค์ ํ๊ธฐ. (0) | 2023.05.28 |
[ JavaScript ] async await ๋ฌธ๋ฒ (0) | 2022.12.04 |