ํ๋ก๋ฏธ์ค๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ํจํด ์ค ํ๋๋ก, ์ธ ๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ฐ๊ฐ์ ์ํ์ ๋ฐ๋ผ ์ฒ๋ฆฌ ๊ณผ์ ์ด ์ด๋ค์ง๋๋ค.
1. Pending(๋๊ธฐ) ์ํ
ํ๋ก๋ฏธ์ค๊ฐ ์์ฑ๋๊ณ ์์ง ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ง ์์ ์ด๊ธฐ ์ํ๋ฅผ "๋๊ธฐ" ์ํ๋ผ๊ณ ํฉ๋๋ค. ์๋๋ ํ๋ก๋ฏธ์ค๋ฅผ ์์ฑํ๋ ์์ ์
๋๋ค.
const myPromise = new Promise((resolve, reject) => { // ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ก์ง... });
2. Fulfilled(์ดํ) ์ํ
๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ํ๋ก๋ฏธ์ค๋ "์ดํ" ์ํ๊ฐ ๋ฉ๋๋ค. resolve ํจ์๋ฅผ ํธ์ถํ์ฌ ์ํ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
const myPromise = new Promise((resolve, reject) => { const data = "Success!"; resolve(data); }); myPromise.then((result) => { console.log(result); // "Success!" });
3. Rejected(์คํจ) ์ํ
๋น๋๊ธฐ ์ฒ๋ฆฌ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก๋ฏธ์ค๋ "์คํจ" ์ํ๊ฐ ๋ฉ๋๋ค. reject ํจ์๋ฅผ ํธ์ถํ์ฌ ์ํ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
const myPromise = new Promise((resolve, reject) => { const error = new Error("Something went wrong!"); reject(error); }); myPromise.catch((error) => { console.error(error.message); // "Something went wrong!" });
ํ๋ก๋ฏธ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ฐฑ ์ง์ฅ์ ํผํ๊ณ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { const success = true; if (success) { resolve("Data fetched successfully!"); } else { reject("Error fetching data"); } }, 2000); }); } fetchData() .then((result) => { console.log(result); // "Data fetched successfully!" }) .catch((error) => { console.error(error); // "Error fetching data" });
ํ๋ก๋ฏธ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ์ธ ๊ฐ์ง ์ํ๋ฅผ ํ์ฉํ์ฌ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ช
ํํ๊ฒ ๋ค๋ฃฐ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋ฉ๋๋ค.