๋น๋๊ธฐ, ๋๊ธฐ๋ ํต์ ๊ณผ ๊ด๋ จ๋ ์ฉ์ด์ด๋ค.

: ์ด์ ์์
์ด ๋๋์ผ ๋ค์ ์์
์ด ์คํ๋๋ค.
์์ฒญ๊ณผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋๋ค๋ ์ฝ์์ด๋ฉฐ, ์์ฒญ์ ํ๋ฉด ์๊ฐ์ด ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋ ์ง ์์ฒญํ ์๋ฆฌ์์ ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ ธ์ผ ํ๋ค.
์ค๊ณ๊ฐ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด์ง๋ง,
๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง ๋ ๊น์ง ์๋ฌด๊ฒ๋ ํ์ง ๋ชปํ๊ณ ๋๊ธฐํด์ผํ๋ค.
: ์ด์ ์์
์ํ ์ค์๋ ๋ค๋ฅธ ์์
์ ์ํํ ์ ์๊ฒ ํ๋ ๊ฒ (์์
์ด ์์ฐจ์ ์ผ๋ก ์คํ๋์ง ์๋๋ค)
์์ฒญํ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋์ง ์์๊ฑฐ๋ผ๋ ์ฝ์์ด๋ค.
๋๊ธฐ ๋ฐฉ์๋ณด๋ค ๋ณต์กํ์ง๋ง,
๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ผ๋ ๊ทธ ์๊ฐ ๋์ ๋ค๋ฅธ ์์ ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
1. ๋๊ธฐ ์์ ์ ์ง๊ด์ ์ด๋ค.
์ด์ ์คํ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ฉด, ๊ทธ ๋ค์ ์คํ์ ํ๊ธฐ ๋๋ฌธ์
์ด๋ค ์์
์ ์์๋ฅผ ์ ํ๊ณ ์ถ๋ค๋ฉด ์์ฐจ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
2. ๋น๋๊ธฐ ์์
์ ์ ํ๋ ์์
์ด ๋๋์ง ์์์์๋ ๋ค์ ์์
์ด ์์๋๋ค.
โจ Q. ๋ง์ฝ ๋น๋๊ธฐ ์์
์ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ ๋ค์ ์์
์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด? โจ
A. ๋น๋๊ธฐ ์์
๊ณผ ๊ทธ ์ดํ ์์
์ ๋ง์น ๋๊ธฐ ์์
์ฒ๋ผ ๋์ํ๋๋ก ๋ง๋ค์ด์ค์ผ ํ๋ค.
promise , async , await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์์
์ ๋ง์น ๋๊ธฐ์ ์ผ๋ก, ์ฆ ๋น๋๊ธฐ ์์
์ด ๋๋ ํ ํน์ ์์
๋ค์ ์คํํ ์ ์๋๋ก ์์๋ฅผ ์ ํด์ฃผ๋ ๊ฒ์ด๋ค.

promise๊ฐ์ฒด๋ ๋น๋๊ธฐ ์์
์ด ๋๋ ํ ๊ฒฐ๊ณผ๋ฅผ ์๋ ค์ฃผ๋ ์ฉ๋ ๋ก ์ฌ์ฉํ๋ค.
promise๋ฅผ ์ฌ์ฉํ๋ฉด, ๋น๋๊ธฐ ์์ ์ด ๋๋ ์์ ์ ์ ์ ์์ด ๋๊ธฐ ์์ ์ฒ๋ผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋๋ค.
๋๊ธฐ , ์ดํ, ๊ฑฐ๋ถ ์ด 3๊ฐ์ ์ํ๋ฅผ ๊ฐ๋๋ค.
๊ฐ๊ฐ ์์
์๋ฃ ์ , ์์
์๋ฃ ํ, ์๋ฌ ๋ฐ์ํ์ฌ ์คํจ ๋ผ๋ ๋ป์ด๋ค.
๋น๋๊ธฐ ์์
์ด ์์
์ข
๋ฃ ํ, promise ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋๋ก ํ๊ณ
promise ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ then, catch๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
const promise = // promise๋ฅผ ๋ฐํํ๋ ์ด๋ค ๋น๋๊ธฐ ์์
...
promise.then((result) => console.log('์ฑ๊ณต!').catch((error) => console.log('์คํจ..')
.then์ ๋ถ์ด๋ฉด ์ดํ ์ํ์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค..catch๋ฅผ ๋ถ์ด๋ฉด ์คํจ ์ํ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.promise ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋๋ผ๋ .then(), .catch() ๋ฑ๋ฑ ๋ค์ ๋ถ์ด๋ ๊ฒ๋ค์ด ๋ง์์ง๋ค.
์ด๋ฌํ ํค์๋๋ฅผ ๋ถ์ด์ง ์๊ณ , ๋์ฑ ๊ฐ๋จํ๊ฒ ๋น๋๊ธฐ ์์
์ ๋๊ธฐ์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ํค์๋๊ฐ await ์ด๋ค.
๋น๋๊ธฐ ์์
์์ await ํค์๋๋ฅผ ๋ถ์ด๋ฉด, ๋น๋๊ธฐ ์์
์ด ๊ฒฐ๊ณผ๋ฅผ ๋ผ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
์ฌ๊ธฐ์ ๊ธฐ๋ค๋ฆฐ๋ค๋ ์๋ฏธ๋, ๋ชจ๋ ์์
์ด ์ข
๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค๋ ์๋ฏธ๊ฐ ์๋๋ค.
๋ด๊ฐ ์ฌ์ฉํ ๊ฒฐ๊ณผ๊ฐ์ด ๋์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค๋ ์๋ฏธ์ด๋ค.
์ฆ, ๋ฉ์ธ ์์ ๋ค์ ๋ฉ์ถ์ง ์๊ณ await๋ฅผ ํฌํจํ๊ณ ์๋ ํจ์๋ง ์ผ์์ ์ง๋๋ค.
await๋ ํผ์ ์ธ ์ ์๋ค = async ํค์๋์ ํจ๊ป ์ฌ์ฉํ๋ค.
async๋ ํน์ ํจ์๋ฅผ ๋น๋๊ธฐ๋ก ๋ง๋๋ ํค์๋์ด๋ค.
await์ ์ธํธ๋ก ์ฌ์ฉํ๋ ์ด์ ๋,
๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ผ์ด ์๋ ๋น๋๊ธฐ ์์ ์ await๋ฅผ ๋ถ์ด๊ณ , ํด๋น ์์ ์ ํฌํจํ๊ณ ์๋ ํจ์์ async๋ฅผ ๋ถ์ด๋ฉด ๋๋ค.
์ถ์ฒ : https://anywaydevlog.tistory.com/30