์ฝ๋ฐฑํจ์์ฒ๋ผ ์ฐจ๋ก๋๋ก ์์๋ฅผ ๋ณด์ฅํด์ฃผ๋๋ฐ, ์ฝ๋๋ ํจ์ฌ ๋ณด๊ธฐ ์ข๊ณ , ๊ธฐ๋ฅ๋ ์ข ๋ ์ ๊ณต์ด ๋๋ ๋ ์. ์ผ๋จ ๋ง๋๋ ๋ฒ๋ถํฐ ์์๋ณด์.
const ํ๋ก๋ฏธ์ค = new Promise()
์ด๋ฌ๋ฉด ํ๋ก๋ฏธ์ค ์์ฑ!ํ๋ก๋ฏธ์ค๋ฅผ ์๋ก ํ๋ ๋ง๋ค๊ณ ๋๋ฉด ์ด์ ๊ทธ ๋ค์์ ์คํํ ์ฝ๋๋ฅผ .then
์ด๋ผ๊ณ ์ฐ๊ณ () ์์ ์ ์ด์ฃผ๋ฉด ๋๋ค.
ํ๋ก๋ฏธ์ค.then()
๋ง์ฝ ํ๋ก๋ฏธ์ค๊ฐ ์คํจํ ๊ฒฝ์ฐ์๋ .catch
๋ผ๊ณ ์ฐ๊ณ () ์์ ์ ์ด์ฃผ๋ฉด ๋๋ค.
์ด์ ์ ๋ดค๋ ์ฝ๋ฐฑ์ 1๋ฒ, 2๋ฒ ์ด๋ ๊ฒ ์์
๋ง ๋ณด์ฅํด์ค ์ ์์๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, ํ๋ก๋ฏธ์ค๋ ์์๋ฟ๋ง ์๋๋ผ ์คํจํ์ ๊ฒฝ์ฐ์ ์คํ๋ ๊ฒ๊น์ง ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ํ๋ช
์ ์ธ ์ฌ๊ฑด์ด๋ผ ๋ณผ ์ ์๋ค. (์ฌ์ง์ด ์ฑ๊ณต/์คํจ์ ๊ด๊ณ์์ด ์คํ๋๋ finally๋ ์์)
ํ๋ก๋ฏธ์ค๊ฐ ์ฑ๊ณต/์คํจํ๋ ๊ฒ์ ํ์ ์ฌ๋ถ๋ new Promise()์์ ์ฝ๋ฐฑํจ์๋ก ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
const ํ๋ก๋ฏธ์ค = new Promise(function(resolve,reject){
const ์ด๋ ค์ด์ฐ์ฐ=1+1
์ฑ๊ณต() // ๋ฌด์กฐ๊ฑด ์ฑ๊ณตํ๊ฒ ๋ง๋ฆ
})
๋ํ, ํ๋ก๋ฏธ์ค๋ ์ฝ๋ฐฑ๊ณผ ๋ฌ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ผ๋ก ๋ฐ์์ ์ ์ฅํ ์ ์๋ค. ๊ฒฐ๊ณผ ๊ทธ ์์ฒด๋ฅผ ๊ฐ์ผ๋ก ๋ฐ๊ธฐ์, ์ฐ์์ผ๋ก ์คํํ๋ ์ฝ๋์์๋ callback๋ณด๋ค ๊ฐ๋ ์ฑ ์๋ ์ฝ๋๊ฐ ๊ฐ๋ฅํ๋ค.
const ํ๋ก๋ฏธ์ค = new Promise(function(resolve,reject){
const ์ด๋ ค์ด์ฐ์ฐ=1+1
์ฑ๊ณต(์ด๋ ค์ด์ฐ์ฐ)
})
ํ๋ก๋ฏธ์ค
.then(function(๊ฒฐ๊ณผ){console.log(๊ฒฐ๊ณผ)}) // ์ฝ์์ 2๊ฐ ์ฐํ
.catch(function(){console.log('์คํจ')})
์ฃผ๋ก ์๋ฒ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํ์ํ ๋ ์ฌ์ฉํ๋ค.
์ ํด์ง ๊ธฐ๋ฅ์ ์ํํ๊ณ ๋์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ฑ๊ณต์ด๋ ์คํจ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฆฌํดํ๋ค
๋๊ธฐ: ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ก์ง์ด ์์ง ์๋ฃ๋์ง ์์ ์ํ
Fulfilled
์ดํ: ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ด ํ๋ก๋ฏธ์ค๊ฐ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํด์ค ์ํ
Rejected
์คํจ: ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์คํจํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ํ
const greeting = new Promise(function (res, rej) {
$.get("https://hello.txt").done(function (๊ฒฐ๊ณผ) {
res(๊ฒฐ๊ณผ);
});
});
greeting
.then(function (๊ฒฐ๊ณผ) {
const ํ๋ก๋ฏธ์ค3 = new Promise(function (res, rej) {
$.get("https://hello2.txt").done(function (๊ฒฐ๊ณผ2) {
res(๊ฒฐ๊ณผ2);
});
});
return ํ๋ก๋ฏธ์ค3;
})
.then((๊ฒฐ๊ณผ2) => {
console.log(๊ฒฐ๊ณผ2);
});
ajax๋ฅผ ์ด์ฉํด ์ธ์ฟ๋ง์ ์ถ๋ ฅํ๋ ์ฐ์ต๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ค.
๋ด๊ฐ ํท๊ฐ๋ ธ๋ ๊ฑฐ๋ return์ ์ด๋์ ํ๋ ๊ฒ์ธ๊ฐ ์๋ค. ํจ์๊ฐ ์๋ ๊ฒน์ณ์์ผ๋ ๋ณด๊ธฐ ์ด๋ ค์ ๋๋ฐ, ๊ฒฐ๋ก ์ ์ผ๋ก ๋ด๊ฐ return ํ๊ณ ์ถ์๋ ํ๋ก๋ฏธ์ค3๋ Promise๋ก ๋ง๋ ๊ฑฐ๊ฐ ๋ค ๋๋ ๋ค์์ ๋ฆฌํดํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ .then((๊ฒฐ๊ณผ2)์ ํ๋ก๋ฏธ์ค3.then ์ด๋ ๊ฒ ์จ์ ์๋ฌ๊ฐ ๋ฌ๋ค. const ํ๋ก๋ฏธ์ค3๋ ๋ธ๋ก๋ ๋ฒจ ์ค์ฝํ๋๊น ๋น์ฐํ {}์์์๋ฐ์ ๋ชป ์ฐพ๋๋ค. ํ๋ก๋ฏธ์ค3์ผ๋ก ์ฐพ์ ๊ฒ ์๋๋ผ ์์ Promise ์์ฒด๋ก .then()์ ์ฐ๊ฒฐํด์ผ ํ๋ค.