๐ค promise ?

- promise๋ ์ด๋ค ๊ณผ์ ์ดํ ์ฃผ์ด์ง ๋์์ ์คํํ ๊ฒ์ ์ฝ์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์ค์ฒฉ๋ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ง๊ด์ ์ด๊ณ ์ฐ์์ ์ธ ์ฝ๋๋ก ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค.
- callback hell์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
promise ์ฌ์ฉ
new Promise((resolve, reject)=>{})
์ ํํ๋ก ์ ์ํฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ์ฝ์ ์ดํ ์ฑ๊ณต์ ์คํ ํ ์ฝ๋ฐฑํจ์๋ฅผ ๋ฐ์ต๋๋ค.
- ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก๋ ์ฝ์ ์ดํ์ ์คํจ์ ์คํํ ์ฝ๋ฐฑํจ์๋ฅผ ๋ฐ์ต๋๋ค.
- ๊ด๋ก์ ์ผ๋ก
resolve
, reject
๋ก ํจ์ ์ด๋ฆ์ ์ ์ํฉ๋๋ค.
reject
๊ฐ ์คํ๋๋ฉด resolve
๋ ๋ฌด์๋ฉ๋๋ค.
- promise๋ 3๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ต๋๋ค.
pedding
: ๋๊ธฐ ์ํ๋ก ์์ง resolve, reject ๋ ์ง ๊ฒฐ์ ๋์ง ์์ ์ด๊ธฐ์ํ์ ์๋ฏธํฉ๋๋ค.
fullfilled
: ์ดํ ์ํ๋ก ์ฝ์์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ์ํ์
๋๋ค.
rejected
: ๊ฑฐ๋ถ ์ํ๋ก ์ฝ์์ด ๊ฑฐ๋ถ๋ ์ํ์
๋๋ค.
- promise๋ ์ฝ์์ด ์ฑ๊ณต์ ์ผ๋ก ์ดํ๋๋ฉด
fulifilled
์ํ์ promise๋ฅผ ๋ฐํํฉ๋๋ค.
then
๋ฉ์๋๋ฅผ ํตํด resolve(์ฑ๊ณต)์ ๋ฐํ๋๋ ๊ฐ์ ๋ฐ์ ์ ์์ต๋๋ค.
catch
๋ฉ์๋๋ฅผ ํตํด reject(์คํจ) ๋ฌ์๋ ๊ฐ์ ๋ฐ์ ์ ์์ต๋๋ค.
finally
๋ฉ์๋๋ ์ฑ๊ณต ์คํจ๋ ์๊ด ์์ด ๊ฐ์ ๋ฐ๋ ์ฝ๋ฐฑํจ์์
๋๋ค.
- ๋ ๋ค๋ฅธ promise๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ฉ์๋ ์ฒด์ด๋์ด ๊ฐ๋ฅํฉ๋๋ค.
promise ์์ ์ฝ๋
const orderchicken = new Promise((resolve, reject)=>{
if(Math.random() < 0.5){
setTimeout(()=>{
resolve('์ ์์ ์ผ๋ก ์ฃผ๋ฌธ์ด ์๋ฃ๋์์ต๋๋ค.');
}, 1000)
}
else {
setTimeout(()=>{
reject('์ฃผ๋ฌธ๋์ด ๋๋ฌด ๋ง์ ์ฃผ๋ฌธ์ ๋ฐ์ง ๋ชปํ์์ต๋๋ค.');
}, 1000)
}
}).then(res=>{
console.log(res);
console.log(typeof res)
}).catch(error => {
console.log(error);
}).finally(()=>{
console.log("์ฃผ๋ฌธ ์ข
๋ฃ");
})
promise์ ๋ณ๋ ฌ ์ฒ๋ฆฌ
1 ) promise all
- promise์ ๋ฐฐ์ด์ ๋ฐ์์ ๋์์ ์คํํฉ๋๋ค.
- ๋ชจ๋ ์ฑ๊ณตํ๋ค๋ฉด resolve๋ ๊ฐ๋ค์ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
- ํ๋ ๋ผ๋ ์คํจํ๋ค๋ฉด ๋ฐ๋ก catch๊ฐ ์คํ๋ฉ๋๋ค.
2 ) promise allSettled
- ์ฃผ์ด์ง proimse๋ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ์ถ๋ ฅํฉ๋๋ค.
- ์คํจ์ ์๊ด์์ด then์ผ๋ก ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
3 ) promise any
- ๊ฐ์ฅ ๋จผ์ ์ฑ๊ณตํ promise์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋ชจ๋ ์คํจ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. catch๋ ๋์ํ์ง ์์ต๋๋ค.
4 ) promise race
- ์ฑ๊ณต, ์คํจ ์๊ด์์ด ์ฒซ ๊ฒฐ๊ณผ๋ฌผ์ then ๋๋ catch๋ก ๋ฐํํฉ๋๋ค.