์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ค๋ ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ํ์คํฌ๋ฅผ ์ฒ๋ฆฌํ๋ค.
๊ทธ๋์ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ๊ณผ๊ฑฐ์๋ ์ฃผ๋ก ์ฝ๋ฐฑ ํจํด์ ์ฌ์ฉํ๋๋ฐ, ์ฝ๋ฐฑ ํจํด์ ์ฝ๋ฐฑ ํฌ๋ก ์ธํด ๊ฐ๋ ์ฑ์ด ์ข์ง ์๊ณ ์๋ฌ ์ฒ๋ฆฌ ๋ฐ ์ฌ๋ฌ ๊ฐ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ฒ์ ํ๊ธฐ๋ ํ๋ค๋ค๋ ๋จ์ ์ด ์๊ธฐ ๋๋ฌธ์ ES6์์ ๋์ ๋ Promise๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ฌํ ๋จ์ ๋ค์ ๋ณด์ํ๋ฉฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
๋น๋๊ธฐ ํจ์๋?
์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ์ฌ์ ์ผ๋ก ์ค๋ ์คํ๋๋ ์์ ์ ์์ํ์ฌ ํด๋น ์์ ์ด ์คํ๋๋ ๋์์๋ ๋ค๋ฅธ ์ด๋ฒคํธ์ ์๋ตํ ์ ์๊ฒ ํ๋ ๊ธฐ์ ๋ก ์์ ์ด ์๋ฃ๋๋ฉด ํ๋ก๊ทธ๋จ์ด ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ค. ์ด ๋๋ฌธ์ ๋น๋๊ธฐ ํจ์ ๋ด๋ถ์ ๋น๋๊ธฐ๋ก ๋์ํ๋ ์ฝ๋์์ ์ฒ๋ฆฌ ๊ฒฐ๊ดด๋ฅผ ์ธ๋ถ๋ก ๋ฐํํ๊ฑฐ๋ ์์ ์ค์ฝํ์ ๋ณ์์ ํ ๋นํ๋ฉด ๊ธฐ๋ํ ๋๋ก ๋์ํ์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
Promise
Promise๋ ๋น๋๊ธฐ ์์ ์ ์ต์ข ์๋ฃ ๋๋ ์คํจ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ก, ๊ธฐ๋ณธ์ ์ผ๋ก ํจ์์ ์ฝ๋ฐฑ์ ์ ๋ฌํ๋ ๋์ ์ ์ฝ๋ฐฑ์ ์ฒจ๋ถํ๋ ๋ฐฉ์์ ๊ฐ์ฒด์ด๋ค. ๋น๋๊ธฐ ์ฐ์ฐ์ด ์ข ๋ฃ๋ ์ดํ์ ๊ฒฐ๊ณผ ๊ฐ๊ณผ ์คํจ ์ฌ์ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ ์ ์์ผ๋ฉฐ, ๋น๋๊ธฐ ๋ฉ์๋์์ ๋๊ธฐ ๋ฉ์๋์ฒ๋ผ ๊ฐ์ ๋ฐํํ ์ ์๋ค. ์ด ๋ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ์๋๋ผ, ๋ฏธ๋์ ์ด๋ค ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๊ฒ ๋ค๋ '์ฝ์'์ ๋ฐํํ๋ค. ์ํํ ๋น๋๊ธฐ ์์ ์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ์๋ resolve(...)๋ฅผ ํธ์ถํ๊ณ , ์คํจํ ๊ฒฝ์ฐ reject(...)๋ฅผ ํธ์ถํ๋ค.
Promise ์ํ
ํ๋ก๋ฏธ์ค ์ํ | ๋ป | ์ํ ๋ณ๊ฒฝ ์กฐ๊ฑด |
pending(๋๊ธฐ) | ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์์ง ์ํ๋์ง ์์ ์ด๊ธฐ ์ํ. | ํ๋ก๋ฏธ์ค๊ฐ ์์ฑ๋ ์งํ ์ด๊ธฐ ์ํ. |
fulfilled(์ดํ) | ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์ํ๋ ์ํ.(์ฑ๊ณต์ ์ผ๋ก ์๋ฃ) | resolve ํจ์ ํธ์ถ |
rejected(๊ฑฐ๋ถ) | ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์คํจํ ์ํ. | reject ํจ์ ํธ์ถ |
Promise ์์ ์ฝ๋
// ํ๋ก๋ฏธ์ค ์์ฑ
const myPromise = new Promise((resolve, reject) => {
// ์ํํ ๋น๋๊ธฐ ์์
์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ์๋ resolve(...)๋ฅผ ํธ์ถํ๊ณ , ์คํจํ ๊ฒฝ์ฐ reject(...)๋ฅผ ํธ์ถํ๋ค.
if(success) {
resolve('result');
} else {
reject('์คํจ ์ด์ ');
}
});
Promise ์ธ์คํด์ค ๋ฉ์๋
- Promise.prototype.catch() : ๊ฑฐ๋ถ(rejected) ์ฒ๋ฆฌ ์ฝ๋ฐฑ์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ผ๋ฉฐ ์ธ์ ๋ ํ๋ก๋ฏธ์ค๋ฅผ ๋ฐํํ๋ค.
- Promise.prototype.then() : ์ดํ(fulfilled)๊ณผ ๊ฑฐ๋ถ(rejected) ์ฒ๋ฆฌ ์ฝ๋ฐฑ์ ์ธ์๋ก ์ ๋ฌ๋ฐ๊ณ , ์ํ์ ๋ฐ๋ผ ์ฒซ ๋ฒ์งธ(์ฑ๊ณต) ๋๋ ๋ ๋ฒ์งธ(์คํจ) ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ๋ค. ํด๋น ๋ฉ์๋๋ ์ธ์ ๋ ํ๋ก๋ฏธ์ค๋ฅผ ๋ฐํํ๋ค.
- Promise.prototype.finally() : ํ๋ก๋ฏธ์ค์ ํ(fulfilled)๊ณผ ๊ฑฐ๋ถ(rejected) ์ฌ๋ถ์ ์๊ด์์ด ๋ฌด์กฐ๊ฑด ํ ๋ฒ ํธ์ถ๋๋ค. ํ๋ก๋ฏธ์ค์ ์ํ์ ์๊ด์์ด ๊ณตํต์ ์ผ๋ก ์ํํด์ผ ํ ์ฒ๋ฆฌ๊ฐ ์์๋ ์ ์ฉํ๋ฉฐ, ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ์ ๋ ํ๋ก๋ฏธ์ค๋ฅผ ๋ฐํํ๋ค.
๐ธ ์ถ์ฒ ๐ธ
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TS] ํ๋ก์ ํธ์ tsconfig ์ค์ ํ๊ธฐ. (0) | 2023.05.28 |
---|---|
[ JavaScript ] async await ๋ฌธ๋ฒ (0) | 2022.12.04 |
[ JavaScript ] undefined์ null์ ์ฐจ์ด์ ๋ํด ์์๋ณด๊ธฐ. (0) | 2022.07.17 |
[ JavaScript ] var, let, const ํํค์น๊ธฐ. (0) | 2022.07.04 |
[ JavaScript / Error ] ์๋ฐ์คํฌ๋ฆฝํธ์ Error ๊ฐ์ฒด (0) | 2022.06.22 |