1. Promise
Promise๋ ๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด์ ๋๋ค. ๋น๋๊ธฐ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ์ ๊ณตํ๊ฑฐ๋, ์คํจํ๋ฉด ์๋ฌ๋ฅผ ๋ฐํํฉ๋๋ค.
์ฃผ์ ํน์ง
- ์ํ: Pending (๋๊ธฐ), Fulfilled (์ดํ), Rejected (๊ฑฐ๋ถ) ์ธ ๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ง๋๋ค.
- ๋ฉ์๋: then, catch, finally ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("๋ฐ์ดํฐ ์์ ์๋ฃ");
}, 1000);
});
};
fetchData().then(result => {
console.log(result); // "๋ฐ์ดํฐ ์์ ์๋ฃ"
}).catch(error => {
console.error(error);
});
2. fetch
fetch๋ ์ต์ ์น API๋ก, HTTP ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. Promise ๊ธฐ๋ฐ์ผ๋ก ๋์ํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์์ ๋๋ค.
๋ธ๋ผ์ฐ์ ์์ ์ ๊ณตํ๋ ๋ด์ฅ ํจ์๋ก, XMLHttpRequest๋ฅผ ๋์ฒดํ๋ฉฐ, ๊ฐ๋จํ ๋คํธ์ํฌ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ์ ์ฉํฉ๋๋ค.
์ฃผ์ ํน์ง
- Promise ๊ธฐ๋ฐ: fetch๋ Promise๋ฅผ ๋ฐํํ๋ฏ๋ก then๊ณผ catch๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋ต ์ฒ๋ฆฌ
- HTTP ์๋ต์ Response ๊ฐ์ฒด๋ก ๋ฐํ๋๋ฉฐ, ์ด ๊ฐ์ฒด์ json(), text() ๋ฑ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต ๋ณธ๋ฌธ์ ํ์ฑํ ์ ์์ต๋๋ค.
- JSON ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด response.json()๊ณผ ๊ฐ์ด ์ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
- fetch๋ ๋คํธ์ํฌ ์ค๋ฅ์ ๊ฐ์ ๊ทผ๋ณธ์ ์ธ ์ค๋ฅ์์๋ง Promise๋ฅผ rejectํฉ๋๋ค. HTTP ์ํ ์ฝ๋๊ฐ 404 ๋๋ 500๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ Promise๋ resolve๋๋ฏ๋ก ์ถ๊ฐ์ ์ธ ์๋ฌ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
fetch('https://api.example.com/data')
.then(response => response.json()) // JSON ์๋ต์ ํ์ฑ
.then(data => console.log(data)) // ๋ฐ์ดํฐ ์ฒ๋ฆฌ
.catch(error => console.error(error));
3. async/await
async/await๋ ๋น๋๊ธฐ ์์ ์ ๋๊ธฐ ์ฝ๋์ฒ๋ผ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฌธ๋ฒ์ ๋๋ค. ์ด๋ Promise ๊ธฐ๋ฐ์ ์ฝ๋ ์์ฑ ๋ฐฉ์์ ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ๋ง๋ค์ด์ค๋๋ค.
์ฃผ์ ํน์ง
- ๋น๋๊ธฐ ํจ์: async๋ก ์ ์ธ๋ ํจ์๋ ํญ์ Promise๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋๊ธฐ: await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ Promise๊ฐ ์ฒ๋ฆฌ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค.
- ์๋ฌ ์ฒ๋ฆฌ: try/catch ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
const fetchData = async () => {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
};
fetchData();
4. axios
axios๋ Promise ๊ธฐ๋ฐ์ HTTP ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, HTTP ์์ฒญ์ ๊ฐํธํ๊ฒ ๋ณด๋ด๊ณ ์๋ต์ ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค. fetch๋ณด๋ค ์ฌ์ฉ์ด ํธ๋ฆฌํ๊ณ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ฃผ์ ํน์ง
- Promise ๊ธฐ๋ฐ: axios๋ Promise๋ฅผ ๋ฐํํ๋ฏ๋ก then๊ณผ catch๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋ JSON ๋ณํ: axios๋ ์๋ต ๋ณธ๋ฌธ์ ์๋์ผ๋ก JSON์ผ๋ก ๋ณํํฉ๋๋ค.
- ์์ฒญ ๋ฐ ์๋ต ์ธํฐ์ ํฐ: ์์ฒญ๊ณผ ์๋ต์ ๊ฐ๋ก์ฑ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ Node.js ์ง์: ๋ธ๋ผ์ฐ์ ์ Node.js ํ๊ฒฝ ๋ชจ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
axios.get('https://api.example.com/data')
.then(response => {
console.log(response.data); // ์๋์ผ๋ก JSON์ผ๋ก ๋ณํ๋ ๋ฐ์ดํฐ
})
.catch(error => {
console.error(error);
});
๋น๊ต ์์ฝ
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ |
๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ฐ์ฒด | HTTP ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ์ฒ๋ฆฌํ๋ ํจ์ |
๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋๊ธฐ์ฒ๋ผ ์์ฑํ ์ ์๋ ๋ฌธ๋ฒ | HTTP ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
์๋ต์ฒ๋ฆฌ | then๊ณผ catch ์ฌ์ฉ | then๊ณผ catch ์ฌ์ฉ, ์๋ต ๊ฐ์ฒด์ ๋ฉ์๋๋ก ์ฒ๋ฆฌ | await ์ฌ์ฉ, ๋๊ธฐ ์ฝ๋์ฒ๋ผ ์ฒ๋ฆฌ | ์๋ JSON ๋ณํ, then๊ณผ catch ์ฌ์ฉ |
์๋ฌ์ฒ๋ฆฌ | catch ๋ธ๋ก ์ฌ์ฉ | catch ๋ธ๋ก ์ฌ์ฉ | try/catch ๋ธ๋ก ์ฌ์ฉ | catch ๋ธ๋ก ์ฌ์ฉ |
๋ธ๋ผ์ฐ์ ํธํ์ฑ | ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ํธํ | ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ํธํ | ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ํธํ | ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ํธํ, Node.js๋ ์ง์ |
๊ธฐํ๊ธฐ๋ฅ | ๊ธฐ๋ณธ์ ์ธ ๋น๋๊ธฐ ์ฒ๋ฆฌ | ๊ธฐ๋ณธ์ ์ธ HTTP ์์ฒญ ์ฒ๋ฆฌ | ๋น๋๊ธฐ ์์ ์ ๋๊ธฐ์ ํํ | ์์ฒญ ๋ฐ ์๋ต ์ธํฐ์ ํฐ, ์๋ JSON ๋ณํ ๋ฑ |
'๐ก ์์๋๋ฉด ์ข์ ๊ฒ๋ค > ๊ฐ๋ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก ํธ์๋ ๊ฐ๋ ] - ์นํ์ด์ง ๋ ๋๋ง ๋ฐฉ์ (0) | 2024.09.26 |
---|---|
[Javascript] - 8๊ฐ์ง ๊ฐ๋ ์ ๋ฆฌ (0) | 2024.08.19 |