promise๋ ์ด์ ์ง์ง ์ ๋๋ ๋์๋ค. #๊ฐ๋ณด์๊ณ ...
โ Callback
- ์ฝ๋ฐฑ ์ง์ฅ = ์ฝ๋ฐฑ์ด ๋๋ฌด ๊ธธ์ด์ง๋ฉด ์ฝ๊ธฐ ํ๋ค๊ณ , ์ดํดํ๊ธฐ๋ ํ๋ฌ
- ์๋ฌ์ฒ๋ฆฌํ๊ธฐ๋ ํ๋ฌ
- ์ ์ง๋ณด์๋ ํ๋ฌ
- ๊ทธ๋ฆฌ๊ณ ์คํจํ๋์ง/์ฑ๊ณตํ๋์ง/๋๊ธฐ์ค์ธ์ง ์๋ ค์ฃผ์ง ์์ (์๋ฌ๊ฐ ๋์ผ๋ง ์ ๋ญ๊ฐ ์๋ชป๋๊ตฌ๋ ๋ผ๊ณ ์์์์๐ฐ)
→ ๊ทธ๋์ promise๊ฐ ๋ฑ์ฅ
โ Promise
- promise๋ ๊ฐ์ฒด์
new Promise()
๋ก ํ๋ก๋ฏธ์ค๋ฅผ ์์ฑํ๊ณ ์ข ๋ฃํ ๋ ๊น์ง ํ๋ก๋ฏธ์ค๋ 3๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ง- pending(๋๊ธฐ) : ๋น๋๊ธฐ์ฒ๋ฆฌ ๋ฏธ์๋ฃ (์์ฑ ์งํ === ๊ธฐ๋ณธ์ํ)
- fulfilled(์ดํ) : ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ฑ๊ณต → resolve ํธ์ถ
- rejected(์คํจ) : ๋น๋๊ธฐ ์ฒ๋ฆฌ ์คํจ → reject ํธ์ถ
- Promise ํ์ ์ฒ๋ฆฌ ๋ฉ์๋
- then : ์ธ์๋ฅผ 2๊ฐ ๋ฐ์ ์ ์์ (1๋ฒ์งธ = ์ฑ๊ณต ์ ํธ์ถ, 2๋ฒ์งธ = ์คํจ ์ ํธ์ถ) → promise ๊ฐ์ฒด return
- catch : ์คํจํ์ ๋์๋ง ํธ์ถ ๋จ, then์ 2๋ฒ์ฌ ์ธ์์ ๊ฐ์ ์ญํ ์ ํจ → promise ๊ฐ์ฒด return
- finally : ์ฑ๊ณต/์คํจ ์ฌ๋ถ์ ์๊ด ์์ด ๋ฌด์กฐ๊ฑด ๋ฑ!! ํ๋ฒ๋ง!! ํธ์ถ๋จ
โ async-await
promise๋ฅผ ์กฐ๊ธ ๋ ์ข๊ฒ ๋ง๋ฌ!
// promise ์ฐ์ ํธ์ถ
function getData() {
return promise1()
.then(response => {
return response;
})
.then(response2 => {
return response2;
})
.catch(err => {
//TODO: error handling
// ์๋ฌ๊ฐ ์ด๋์ ๋ฐ์ํ๋์ง ์๊ธฐ ์ด๋ ต๋ค.
});
}
// async await ์ฐ์ ํธ์ถ
async function getData() {
const response = await promise1();
const response2 = await promise2(response);
return response2;
}
์ฝ๋ ์ถ์ฒ : https://ithub.tistory.com/223
- ์ฝ๋๊ฐ ๋น๊ต์ ๊ฐ๊ฒฐํ๊ณ , ๊ฐ๋ ์ฑ์ด ๋์์ง
- ์๋ต ๋ฐ์ดํฐ๋ก ๋ค์ด์ค๋ ๋ณ์(์ฃผ๋ก res, response, data ๋ฑ๋ฑ์ผ๋ก ์ฐ์ด๋ ์ ๋ค)๋ฅผ ์์จ ์ ์๋ค
try-catch
๋ก ์๋ฌ๋ฅผ ํธ๋ค๋งํจ- error๊ฐ ์ด๋์ ๋ฐ์ํ๋์ง ์๊ธฐ ์ฌ์
๐์ฐธ๊ณ (๊ฐ์ฌํฉ๋๋ค)
'๐๊ณต๋ถ > JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ๋๋ฐ์ด์ค(Debounce) vs ์ค๋กํ(Throttle) (0) | 2021.10.12 |
---|---|
[JavaScript] var๊ณผ ํธ์ด์คํ (0) | 2021.10.11 |
[JavaScript] ํ์ดํํจ์ vs ์ผ๋ฐํจ์ (0) | 2021.10.09 |
[JavaScript] window.requestAnimationFrame() (0) | 2021.10.07 |
[JavaScript] Babel (0) | 2021.09.25 |
๋๊ธ