Jieunny์ ๋ธ๋ก๊ทธ
S2) Unit3. [์ค์ต] ํ์ด๋จธ API ๋ณธ๋ฌธ
๐ฃ ์ง๋ฌธ์ ๋ตํด๋ณด๊ธฐ
1๏ธโฃ Promise ์คํ ํจ์๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ resolve์ reject๋ ๊ฐ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์?
โ๏ธ resolve
โฐ ์ฝ๋ฐฑํจ์์ ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋ฉด resolve ํจ์๊ฐ ํธ์ถ๋๊ณ , then์ผ๋ก ์ ๊ทผํด์ 1์ดํ์ ๋น๋์ค๋ฅผ ๋ฉ์ถ๊ณ , ์ ๋ชฉ์ ํ์ํ๋ค.
โฐ then์ด promise ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉด, ๋ค์ then์ ์คํํด์ ํจ์๋ฅผ ๋ฐ์์จ๋ค.
โ๏ธ reject
โฐ ์ฝ๋ฐฑํจ์์ ์ฝ๋์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด reject ํจ์๋ฅผ ํธ์ถํ๊ณ catch๋ก ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
2๏ธโฃ resolve, reject ํจ์์๋ ์ ๋ฌ์ธ์๋ฅผ ๋๊ธธ ์ ์์ต๋๋ค. ์ด๋ ๋๊ธฐ๋ ์ ๋ฌ์ธ์๋ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์?
โ๏ธ ๊ฐ๊ฐ ํธ์ถํ๋ ์ฝ๋ฐฑํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ ์ ์๋ค.
3๏ธโฃ new Promise()๋ฅผ ํตํด ์์ฑํ Promise ์ธ์คํด์ค์๋ ์ด๋ค ๋ฉ์๋๊ฐ ์กด์ฌํ๋์? ๊ฐ๊ฐ์ ์ด๋ค ์ฉ๋์ธ๊ฐ์?
โ๏ธ catch() : promise๊ฐ ๊ฑฐ๋ถ๋๋ค๋ฉด ํธ์ถ๋๊ณ ์ฝ๋ฐฑํจ์์ ๋ฐํ๊ฐ์ ๋ฐ์ ์ ์๋ค.
โ๏ธ then() : promise๊ฐ ์ดํ๋๋ค๋ฉด then์ผ๋ก ๋ฐํ๊ฐ์ ์ด์ฉํ ์ ์๊ณ , ์ promise๋ฅผ ๋ฐํํ ์ ์๋ค.
โ๏ธ finally() : promise์ ์ํ์๋ ๊ด๊ณ์์ด ๋ฌด์กฐ๊ฑด ํธ์ถ๋๋ค.
4๏ธโฃ Promise.prototype.then ๋ฉ์๋๋ ๋ฌด์์ ๋ฆฌํดํ๋์?
โ๏ธ then() ๋ฉ์๋๋ Promise๋ฅผ ๋ฐํํ๊ณ ๋ ๊ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค.
ํ๋๋ promise๊ฐ ์ดํํ์๋, ํ๋๋ ๊ฑฐ๋ถํ์ ๋๋ฅผ ์ํ ์ฝ๋ฐฑํจ์์ด๋ค.
5๏ธโฃ Promise.prototype.catch ๋ฉ์๋๋ ๋ฌด์์ ๋ฆฌํดํ๋์?
โ๏ธ promise๋ฅผ ๋ฆฌํดํ๋ค. catch ๋ด๋ถ์ ์ผ๋ก Promise.prototype.then(undefined, onRejected)์ ํธ์ถํ๊ณ , ํธ์ถํ then์ ๋ฐํ๊ฐ์ธ promise๋ฅผ ๋ฆฌํดํ๋ค.
6๏ธโฃ Promise์ ์ธ ๊ฐ์ง ์ํ๋ ๊ฐ๊ฐ ๋ฌด์์ด๋ฉฐ, ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ์ง๋์?
โ๏ธ ๋๊ธฐ(pending) : ์ดํํ๊ฑฐ๋ ๊ฑฐ๋ถ๋์ง ์์ ์ด๊ธฐ ์ํ
โ๏ธ ์ดํ(fulfilled) : ์ฐ์ฐ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ์ํ
โ๏ธ ๊ฑฐ๋ถ(rejected) : ์ฐ์ฐ์ด ์คํจํ ์ํ
7๏ธโฃ await ํค์๋ ๋ค์์ ๋ฑ์ฅํ๋ ํจ์ ์คํ์ ์ด๋ค ํ์ ์ ๋ฆฌํดํ ๊ฒฝ์ฐ์๋ง ์๋ฏธ๊ฐ ์๋์?
โ๏ธ promise ํ์ ์ ๋ฆฌํดํ ๊ฒฝ์ฐ์๋ง ์๋ฏธ๊ฐ ์๋ค. await๋ promise๊ฐ ์ดํ๋๊ฑฐ๋ ๊ฑฐ๋ถ๋ ๋๊น์ง async ํจ์์ ์คํ์ ์ผ์ ์ ์งํ๊ณ , promise๊ฐ ์ดํ๋๋ฉด async ํจ์๋ฅผ ์ ์งํ ๋ถ๋ถ๋ถํฐ ์คํํ๋ค.
8๏ธโฃ awit ํค์๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ด๋ค ๊ฐ์ด ๋ฆฌํด๋๋์?
โ๏ธ promise์์ ์ดํ๋ ๊ฐ์ ๋ฆฌํดํ๋ค. ๋ง์ฝ promise๊ฐ ๊ฑฐ๋ถ๋๋ฉด await๋ ๊ฑฐ๋ถ๋ ๊ฐ์ ๋์ง๋ค.
'CodeStates > Training' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
S2) Unit3. [์ค์ต] fetch API (0) | 2023.01.19 |
---|---|
S2) Unit3. [์ค์ต] fs ๋ชจ๋ (0) | 2023.01.19 |
S2) Unit3. [์ค์ต] Underbar (0) | 2023.01.17 |
S2) Unit2. [์ค์ต] Beesbeesbees (0) | 2023.01.16 |
[์ฝํ๋ฆฟ] Daily Coding (0) | 2023.01.13 |