45์ฅ ํ๋ก๋ฏธ์ค(โป๋จ์ ๊ฐ๋ ๋ง ์ ๋ฆฌ)
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ํ๋์ ํจํด์ผ๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ ํก์ ์ธ ์ฝ๋ฐฑ ํจํด์ ์ฝ๋ฐฑ ํฌ๋ก ์ธํด ๊ฐ๋ ์ฑ์ด ๋์๊ณ ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ค ๋ฐ์ํ ์๋ฌ์ ์ฒ๋ฆฌ๊ฐ ๊ณค๋ํ๋ฉฐ ์ฌ๋ฌ ๊ฐ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐ๋ ํ๊ณ๊ฐ ์๋ค. ES6์์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ ๋ค๋ฅธ ํจํด์ผ๋ก ํ๋ก๋ฏธ์ค๋ฅผ ๋์ ํ๋ค. ํ๋ก๋ฏธ์ค๋ ์ ํต์ ์ธ ์ฝ๋ฐฑ ํจํด์ด ๊ฐ์ง ๋จ์ ์ ๋ณด์ํ๋ฉฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ ์์ ์ ๋ช ํํ๊ฒ ํํํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
45.2 ํ๋ก๋ฏธ์ค์ ์์ฑ
Promise ์์ฑ์ ํจ์๋ฅผ new ์ฐ์ฌ์์ ํจ๊ป ํธ์ถํ๋ฉด ํ๋ก๋ฏธ์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ES6์์ ๋์ ๋ Promise๋ ํธ์คํธ ๊ฐ์ฒด๊ฐ ์๋ ECMAscript ์ฌ์์ ์ ์๋ ํ์ค ๋นํธ์ธ ๊ฐ์ฒด๋ค. Promise ์์ฑ์ ํจ์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ๋๋ฐ ์ด ์ฝ๋ฐฑ ํจ์๋ resolve์ reject ํจ์๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ๋๋ค.
const promise = new Promise((resolve, reject) => {
if( /* ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ฑ๊ณต */ ){
resolve('result');
}else{ /* ๋น๋๊ธฐ ์ฒ๋ฆฌ ์คํจ */
reject('failure reason');
}
});
Promise ์์ฑ์ ํจ์๊ฐ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ฝ๋ฐฑ ํจ์ ๋ด๋ถ์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค. ์ด๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์ฑ๊ณตํ๋ฉด ์ฝ๋ฐฑ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ resolve ํจ์๊ฐ ํธ์ถํ๊ณ , ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์คํจํ๋ฉด reject ํจ์๋ฅผ ํธ์ถํ๋ค.