ํ”„๋กœ๋ฏธ์Šค(Promise)์˜ ์„ธ ๊ฐ€์ง€ ์ƒํƒœ์™€ ํ™œ์šฉ

ํ”„๋กœ๋ฏธ์Šค๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ, ์„ธ ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ ๊ฐ๊ฐ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ๊ณผ์ •์ด ์ด๋ค„์ง‘๋‹ˆ๋‹ค.

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"
  });
ํ”„๋กœ๋ฏธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ์„ธ ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.