๋ฐ์ํ
Promise : ์ฝ์ํ ๋ด์ฉ
โป ๊ธฐ๋ณธํํ
let promise = new Promise(function(resolve, reject){ });โ
์ต๋ช ํจ์(ํจ์๋ฅผ ๋ณ์์ ๋ด์ ํํ) ์ ๋๋ค.
- ๋ฌด์จ ์ฝ์์ด์๋ ์ง ๊ธฐ์ตํ๋ ค๋ฉด ์ด๋ฆ์ด ๋ถ์ด์ผ ๊ฒ ์ฃ .
๊ทธ๋์ ๊ผญ ๋ณ์์ ๋ด์์ผ ํฉ๋๋ค.
์๋๋ฉด ์ฝ์์ ํด๋ ์คํํ ์ ์์ด์. - ์ฝ์ํ ๊ฑธ ์คํ ์ฑ๊ณตํ๋ฉด resolve
- ์คํจํ๋ฉด reject ๊ฐ ์คํ๋ฉ๋๋ค.
Promise ๊ตฌ์ฑ ์ํ๊ฐ ๋ณํ
- Promise์ ๊ธฐ๋ณธ ์ํ๊ฐ
- PromiseState : pending
- PromiseResult : undefined
- PromiseState : pending
- ์ฑ๊ณตํ ๊ฒฝ์ฐ
- PromiseState : fulfilled
- PromiseResult์์๋ resolve ์ ๋ด๊ธด ๊ฐ์ด ํ๊ธฐ๋ฉ๋๋ค.
- PromiseState : fulfilled
- ์คํจํ ๊ฒฝ์ฐ
- PromiseState : rejected
- PromiseResult ์๋ reject ์ ๋ด๊ธด ๊ฐ์ด ํ๊ธฐ๋ฉ๋๋ค.
- PromiseState : rejected
promise.then().catch().finally()
promise()๋ฅผ try/catch ๋ฌธ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
async : ์ฝ์์ ์คํ
โป ๊ธฐ๋ณธํํ
async function doPromise() { }โ
async๋ ํจ์๋ช ์์ ๋ถ์ต๋๋ค.
- async๋ Promise๋ฅผ ๋ฐํํฉ๋๋ค.
- Promise ํจ์๊ฐ ์๋์ฌ๋ ๋ง์ด์ฃ .
- ์ฌ๊ธฐ ์๋ฌด ๊ฒ๋ ๋ค์ด์์ง ์์ async๊ฐ ๋ถ์ ํจ์๊ฐ ์์ต๋๋ค.
- ์ด async ํจ์๋ฅผ ์คํํด๋ณด๋ฉด Promise๊ฐ ์ฐํ๋๋ค.
- ๊ทธ๋์ async๋ง ๋ถ์ฌ์ฃผ๋ฉด Promise()ํจ์๋ฅผ ๋ฆฌํดํ๋ then()ํจ์์ ํจ๊ป ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
- ์ฌ๊ธฐ ์๋ฌด ๊ฒ๋ ๋ค์ด์์ง ์์ async๊ฐ ๋ถ์ ํจ์๊ฐ ์์ต๋๋ค.
await : ์ฝ์์ ๊ธฐ๋ค๋ ค
await์ async ํจ์ ์์์๋ง ์คํ ๊ฐ๋ฅํฉ๋๋ค
- ์ด๋ค ์ฝ์์ ๊ธฐ๋ค๋ฆฌ๋ ์ง ์์์ผ ๊ฒ ์ฃ ?
๊ทธ๋์ Promise ๋ณ์๋ช ์์ ์ ์ต๋๋ค.
โป๊ธฐ๋ณธํํ
const promiseName = new Promise(function(resolve, reject){ }); async function waitPromise(){ await promiseName(); }โ
await์ ์ฝ์์ด ์คํ๋๊ณ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ค๋๋ค.
- ์ฐพ๋ค๊ฐ Promise๋ฅผ ๋ณ์์ ๋ด์ง ์๊ณ
return์ ๋ฃ์ด์ ํจ์๋ก ์ฌ์ฉํ๋ ๊ฑธ ๋ณด์ ๋ง๋ค์ด๋ณด์์ต๋๋ค.
- ์ด ์ฝ๋๋ฅผ ๋ณด๊ธฐ ๋ถํธํ๋ ํ์ดํ ํจ์๋ก ๋ฐ๊ฟ๋ณด๋ฉด
- ์ด๋ ๊ฒ ๋ฉ๋๋ค.
- ์ด ์ฝ๋๋ฅผ ๋ณด๊ธฐ ๋ถํธํ๋ ํ์ดํ ํจ์๋ก ๋ฐ๊ฟ๋ณด๋ฉด
๋ฐ์ํ
'โจ UI > ๐ JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS]์๋ฐ์คํฌ๋ฆฝํธ๋? + ์์ฑ๋ฒ (0) | 2024.12.24 |
---|---|
[JS]๋์นญ์ฐ์ฐ : ๋ ผ๋ฆฌ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ์ด๊ธฐํ Short Circuit Evaluation (0) | 2023.07.30 |
[JS]Object.entries() : ๊ฐ์ฒด ์ ๋ฐ์ดํฐ ํ์ธํ๊ธฐ (0) | 2023.06.18 |
[JS]typeof() : ๋ณ์ ํ์ ํ์ธํ๊ธฐ(+ ===์๊ฒฉํ ๋๋ฑ์ฐ์ฐ์) (0) | 2023.06.18 |
[JS]์ค์ผ์ค๋ง ํจ์ setTimeout() ๊ณผ setInterval() (0) | 2023.06.11 |