์ค์ฒฉ๋ ์ฝ๋ฐฑ. ๋ค์ฌ์ฐ๊ธฐ์ ํผ๋. ์ถ์ ์ด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ ์ค๋ฅ ์ฒด์ธ. ์ด์ ์ฝ๋๋ฒ ์ด์ค์์ ๋น๋๊ธฐ JavaScript๋ฅผ ์ฌ์ฉํด ๋ณธ ์ ์ด ์๋ค๋ฉด ๊ฐ๋ฐ์๋ค์ด ์ฝ๋ฐฑ ์ง์ฅ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ํ์์ ์ต์ํ ๊ฒ์ ๋๋ค. ์ด๋ ํจ์ ํธ์ถ์ด ์๋ก ๊น์ด ์ค์ฒฉ๋์ด ๋ณต์กํ๊ณ ์ทจ์ฝํ๋ฉฐ ์ฝ๊ธฐ ์ด๋ ค์ด ๋ก์ง์ ์ด๋ํ๋ ํจํด์ ์๋ฏธํฉ๋๋ค. ์ด ํจํด์ ํ์ผ ์ก์ธ์ค, HTTP ์์ฒญ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํธ ์์ฉ๊ณผ ๊ฐ์ ๋น๋๊ธฐ ์์ ์ ํฌ๊ฒ ์์กดํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
์ฝ๋ฐฑ ํฌ์ ๋จ์ํ ๋ฏธ์ ์ธ ๋ฌธ์ ๊ทธ ์ด์์ ๋๋ค. ์ทจ์ฝํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ค๋ฅ ์ฒ๋ฆฌ๋ ผ๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ ๋ฐ ํ์ํ ์ธ์ง ๋ถํ๊ฐ โโ์ฆ๊ฐํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ ์ ์ง ๊ด๋ฆฌ, ํ์ฅ์ฑ ๋ฐ ํ์ ์ ์ฅ์ ๊ฐ ๋ฉ๋๋ค. ํ์ ๊ฐ์ํ๋ ์ ์๋ ๋ ผ๋ฆฌ ๊ณ์ธต์ ํด๋ ํ๋ ๋ฐ ๊ท์คํ ์๊ฐ์ ๋ญ๋นํฉ๋๋ค.
์ด ๊ธ์ ๋ณต์กํ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ ๊ฐ์ด๋์ ๋๋ค. ์ค์ฒฉ๋ ์ฝ๋ฐฑ์์ Promise์ async/await ๊ตฌ๋ฌธ์ผ๋ก ์ ํํ๋ฉด ํ๋ฆ ์ ์ด ๋ฐ ์ค๋ฅ ๊ด๋ฆฌ๊ฐ ํฅ์๋ ๋ช ํํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๋ ๊ฑฐ์ ํ๋ก์ ํธ๋ฅผ ๋ฆฌํฉํ ๋งํ๊ฑฐ๋ ์ต๊ทผ ๊ตฌํ์ ๊ฐ์ ํ๋ ๊ฒฝ์ฐ, ์ด ๊ฐ์ด๋๋ ์คํ ๊ฐ๋ฅํ ์ ๋ต, ์ค์ ์ฌ๋ก, ์ค์ฉ์ ์ธ ์ฝ๋ฉ ํจํด์ ์๋ดํ์ฌ ๋น๋๊ธฐ JavaScript ๋ก์ง์ ๋ช ํ์ฑ๊ณผ ํจ์จ์ฑ์ ํ๋ณตํ๋ ๋ฐ ๋์์ ๋๋ฆฝ๋๋ค.
์ฝ๋ฐฑ ์ง์ฅ: ๋ฌด์ํ ์ ์๋ ํผ๋
๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ JavaScript์ ํต์ฌ์ผ๋ก, ๊ฐ๋ฐ์๊ฐ ๋ฉ์ธ ์คํ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ๋คํธ์ํฌ ์์ฒญ, ํ์ผ ์์ , ํ์ด๋จธ ๋ฑ์ ์์ ์ ์ํํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด์ง๋ง, ๋น๋๊ธฐ ๋์ ์ฝ๋ฐฑ์ ๊ด๋ฆฌํ๋ ์๋ ํจํด์ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋น ๋ฅด๊ฒ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ์ต๋๋ค.
์ฝ๋ฐฑ ์ง์ฅ์ ์ฝ๋ฐฑ์ด ์ฌ๋ฌ ๋จ๊ณ์ ๊น์ด๋ก ์ค์ฒฉ๋์ด ์๋ ์ํฉ์ ๋งํฉ๋๋ค. ๊ฐ ํจ์๋ ์ด์ ํจ์์ ์์ ์๋ฃ์ ์์กดํ๋ฉฐ, ๊ตฌ์กฐ๋ ์ข์ฐ๋ก, ๊ทธ๋ฆฌ๊ณ ์๋๋ก ๋ป์ด ๋๊ฐ๋ฉฐ ์ข ์ข ํ๋ฉธ์ ํผ๋ผ๋ฏธ๋๋ผ๊ณ ๋ถ๋ฆฌ๋ ํจํด์ ํ์ฑํฉ๋๋ค. ์๊ฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ค์์ง์ง๋ง, ์ง์ง ๋ฌธ์ ๋ ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ค๋ฅ ๊ด๋ฆฌ์ ๋ฏธ์น๋ ์ํฅ์ ๋๋ค.
์ค์ฒฉ์ด ๊น์ด์ง์๋ก ์ด๋ค ํจ์๊ฐ ๋ฌด์์ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์คํ์ ์ด๋ ๋ถ๋ถ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋์ง ํ์ ํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋๋ค. ์ค๋ฅ ์ฒ๋ฆฌ๋ ๊ฐ ์ฝ๋ฐฑ์ ํตํด ์๋์ผ๋ก ์ ๋ฌํด์ผ ํ๋ฏ๋ก ์ค์ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค. ์ฌ์ํ ๋ณ๊ฒฝ ์ฌํญ์กฐ์ฐจ๋ ๋ก์ง ์ฒด์ธ์ ์ฌ๋ฌ ๋ถ๋ถ์ ๊ฑด๋๋ ค์ผ ํ๋ฉฐ, ์๋ก์ด ๊ฐ๋ฐ์๋ ๊ฒ๋ณด๊ธฐ์ ๊ด๋ จ ์์ด ๋ณด์ด๋ ํจ์๋ค ๊ฐ์ ์ ์ด ํ๋ฆ์ ์ถ์ ํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ผ๋ฉด์ ์จ๋ณด๋ฉ ์๋๊ฐ ๋๋ ค์ง๋๋ค.
๋ ๋ค๋ฅธ ์ค์ํ ๋ฌธ์ ๋ ์ ์ด ์ญ์ ์ ๋๋ค. ์ฝ๋ฐฑ์ ์ฌ์ฉํ๋ฉด ์คํ ํ์ด๋ฐ๊ณผ ์์์ ๋ํ ์ ์ด๊ถ์ด ์ธ๋ป ๋ณด๊ธฐ์ ๋์์ด ๋ช ํํ์ง ์์ ์ ์๋ ํจ์์ ๋๊ฒจ์ง๋๋ค. ์ด๋ฌํ ์์ธก ๋ถ๊ฐ๋ฅ์ฑ์ ํนํ ๋น๋๊ธฐ ๋ก์ง์ด ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ์๋น์ค ๋ฐ ๋ฏธ๋ค์จ์ด์ ๊น์ด ๋ด์ฅ๋ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌํํ๊ณ ์์ ํ๊ธฐ ์ด๋ ค์ด ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํต๋๋ค.
์ฝ๋ฐฑ ์ง์ฅ์ ์ธ์ํ๋ ๊ฒ์ด ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ๋๋ค. ๋ค์์ ์ต์ ํจํด, ํนํ Promise์ ๋น๋๊ธฐ ํจ์๊ฐ ๋ ผ๋ธ๋กํน ์คํ์ ์ ํดํ์ง ์์ผ๋ฉด์ ๊ฐ๋ ์ฑ๊ณผ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋ณต์ํ๋ ๋ฐ ์ด๋ป๊ฒ ๋์์ด ๋ ์ ์๋์ง ์ดํดํ๋ ๊ฒ์ ๋๋ค. ๋ค์ ์น์ ์์๋ ์ฝ๋๋ฒ ์ด์ค์์ ์ฝ๋ฐฑ ๊ธฐ๋ฐ ํจํด์ ์๋ณํ๋ ๋ฐฉ๋ฒ๋ถํฐ ์์ํ์ฌ ์ด๋ฌํ ๋ณํ๋ฅผ ์๋ดํฉ๋๋ค.
JavaScript์์ ์ค์ฒฉ ์ฝ๋ฐฑ ์ดํดํ๊ธฐ
์ฝ๋ฐฑ์ด ๋ง์ ์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ฆฌํฉํ ๋งํ๋ ค๋ฉด ์ค์ฒฉ์ด ์ด๋ป๊ฒ ๋ฐ์ํ๊ณ ์ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์์ง๋์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฝ๋ฐฑ์ ๋ณธ์ง์ ์ผ๋ก ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ ํจ์์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ๋น๋๊ธฐ ์์ ์ด ์๋ฃ๋ ํ ์คํ๋ฉ๋๋ค. ๊ฒ๋ณด๊ธฐ์๋ ์ถฉ๋ถํ ๊ฐ๋จํด ๋ณด์ ๋๋ค. ํ์ง๋ง ์ฌ๋ฌ ๋น๋๊ธฐ ์์ ์ด ์๋ก ์์กดํ๊ณ ์ฐ๊ฒฐ๋์ด ์์ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ฐ์ ์ธ ์๋ฅผ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ํ์ผ์ ์ฝ๊ณ , ๋ด์ฉ์ ์ฒ๋ฆฌํ๊ณ , ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTTP ์์ฒญ์ ํ ๋ค์, ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ํ์ผ์ ๋ค์ ์ธ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ ๋จ๊ณ์ ์ฝ๋ฐฑ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๋น ๋ฅด๊ฒ ๋ค์ฌ์ฐ๊ธฐ๋๊ณ ๋ณต์กํด์ง๋ฉฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋๋ค. ๊ฐ ๊ณ์ธต์ ๋ ๋ค๋ฅธ ์์ค์ ์ค์ฒฉ์ ๋์ ํ๋ฉฐ, ๊ฐ ๋จ๊ณ๋ง๋ค ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ณตํ๊ฑฐ๋ ์ค๋ณตํด์ ์ํํด์ผ ํฉ๋๋ค.
์ด ์คํ์ผ์ ์์ ์คํฌ๋ฆฝํธ์์๋ ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ ํฐ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ด๋ฌํ ์ค์ฒฉ ๊ตฌ์กฐ๊ฐ ์ฌ๋ฌ ํ์ผ๊ณผ ๋ชจ๋์ ๊ฑธ์ณ ์์ ์ ์์ต๋๋ค. ๋ก์ง์ด ๋จํธํ๋๊ณ ๋๋ฒ๊น ์ ์๊ฐ์ด ๋ง์ด ์์๋๋ ์์ ์ด ๋ฉ๋๋ค. ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ ์คํ๊ฒ ํ๋๋ผ๋ ์๊ฐ์ ์ธ ๋ณต์กํจ๊ณผ ์ธ์ง์ ๋ถ๋ด์ผ๋ก ์ธํด ์ด ํจํด์ ์ฅ๊ธฐ์ ์ธ ๊ฐ๋ฐ์ ์ ํฉํ์ง ์์ต๋๋ค.
์ค์ฒฉ๋ ์ฝ๋ฐฑ์ ์ ์ด ํ๋ฆ์ ๋ชจํธํ๊ฒ ๋ง๋ญ๋๋ค. ์คํ ์์๊ฐ ๋ช ํํ ๋๊ธฐ ์ฝ๋์ ๋ฌ๋ฆฌ, ๋น๋๊ธฐ ๋ก์ง์ด ๊น๊ฒ ์ค์ฒฉ๋๋ฉด ์ด๋ค ์์ ์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๊ณ ์ด๋ค ์์ ์ด ๋์์ ์คํ๋๋์ง ๋ถ๋ถ๋ช ํด์ง ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ถํ์ค์ฑ์ ์ค๋ ์์ฑํ๋ ์ฝ๋๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ด์ผ ์ ์ง ๊ด๋ฆฌํด์ผ ํ ์ฝ๋์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๋ฆฌํฉํ ๋ง ์ ๋ต์ ์ ์ฉํ๊ธฐ ์ ์ ์ด๋ฌํ ํจํด์ ํ์ ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ๋ค์ ์น์ ์์๋ ํ๋ก์ ํธ์์ ์ฝ๋ฐฑ ๊ธฐ๋ฐ ๋ก์ง์ ํ์ ํ๊ณ ์ด๋ค ๋ถ๋ถ์ ๋จผ์ ๋ณํํ ๊ฐ์น๊ฐ ์๋์ง ํ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์ฝ๋, ์ค๋ฅ ์ฒด์ธ ๋ฐ ๋น๋๊ธฐ ์คํ๊ฒํฐ
์ฝ๋ฐฑ ์ง์ฅ์ ์ฝ๋๋ฒ ์ด์ค์์ ํญ์ ๋ฐ๋ก ๋๋ฌ๋๋ ๊ฒ์ ์๋๋๋ค. ๊ฒ๋ณด๊ธฐ์๋ ์๋ฌด ๋ฌธ์ ์์ด ๋ณด์ด๋ ๋น๋๊ธฐ ํจ์ ๋ช ๊ฐ๋ก ์์ํด์ ์ ์ฐจ ์ข ์์ฑ๊ณผ ํ๋ฆ ๋ฐฉํด๊ฐ ๋ค์ํจ ๊ทธ๋ฌผ๋ก ๋ณํด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ฝ๋๋ฒ ์ด์ค๊ฐ ์ปค์ง๊ณ ๋ ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ด๋ค๊ณผ ์ํธ์์ฉํ ์๋ก ์ฆ์์ ๋ช ํํด์ง๋๋ค.
๊ฐ์ฅ ํํ ๋ฌธ์ ์ค ํ๋๋ ์ ์ง ๊ด๋ฆฌ์ ๋๋ค. ์ค์ฒฉ๋ ์ฝ๋ฐฑ์ ๋ถ์์ฉ ์์ด ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ๊ณ ์ ๋ฐ์ดํธํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋น๋๊ธฐ ์ฒด์ธ์ ํ ๋ถ๋ถ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ฌ๋ฌ ์ฝ๋ฐฑ ํจ์๋ฅผ ์์ ํด์ผ ํ ์ ์์ผ๋ฉฐ, ๊ฐ ํจ์์๋ ๋ฏธ๋ฌํ ์ข ์์ฑ ์ด์ ๋จ๊ณ์ ์ํ๋ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ด๋ฌํ ์ ํ์ ๊ธด๋ฐํ ๊ฒฐํฉ์ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์ ์ํ์ ์ฆ๊ฐ์ํค๋ฉฐ, ํนํ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ์ผ๊ด๋์ง ์๊ฒ ๊ตฌํ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ค๋ฅ ์ฒด์ธ์ ๋ ๋ค๋ฅธ ํํ ๊ณจ์นซ๊ฑฐ๋ฆฌ์ ๋๋ค. ๊น์ด ์ค์ฒฉ๋ ์ฝ๋ฐฑ ๊ตฌ์กฐ์์๋ ์ค๋ฅ๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌ๋๊ฑฐ๋ ์ฌ๋ฌ ๊ณ์ธต์ ์ค๋ฅ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค. ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ณ ๊ด๋ฆฌํ๋ ์ค์ ์ง์ค์ ๋ฉ์ปค๋์ฆ์ด ์์ผ๋ฉด ๋ฒ๊ทธ๊ฐ ๋ชจํธํ ๋ฐํ์ ์์ธ๋ก ๋ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋๋ฒ๊น ์ด ๋๋ฆฌ๊ณ ๋ถํธํด์ง๋๋ค. ์ค๋ฅ๊ฐ ๊ธฐ๋ก๋๋๋ผ๋ ์คํ ์ถ์ ์ ์ข ์ข ๋ถ์์ ํ๊ฑฐ๋ ์คํด์ ์์ง๊ฐ ์์ผ๋ฉฐ, ํนํ ์ต๋ช ํจ์๋ ๋์ ์ฝ๋ฐฑ์ด ํฌํจ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ฝ๋ฐฑ ๊ธฐ๋ฐ ์ฝ๋์ ์ ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ ์ข ์ข "๋น๋๊ธฐ ์คํ๊ฒํฐ"๋ผ๋ ๋ณ๋ช ์ ์ป์ต๋๋ค. ์ ์ด ํ๋ฆ์ ์ค์ฒฉ๋ ๋ ๋ฒจ ์ฌ์ด๋ฅผ ์ค๊ฐ๋ฉฐ ์ ํ ๋ ผ๋ฆฌ๋ ์๋๋ฅผ ๊ฑฐ์ ๋๋ฌ๋ด์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์คํ์ ์๋์ผ๋ก ์ถ์ ํด์ผ ํ๋ฉฐ, ์ฌ๋ฌ ์ฝ๋ ํ๋ฉด์ ๊ฑธ์ณ ํ ํด๋ก์ ์์ ๋ค์ ํด๋ก์ ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ ์์ฐ์ฑ์ ์ ํ์ํค๊ณ ๋ฆฌํฉํ ๋ง ์ค ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ๋์ ๋๋ค.
์ด๋ฌํ ์ฆ์์ ํนํ ๋๊ท๋ชจ ํ์์ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ํ์ฅ๋จ์ ๋ฐ๋ผ ๋ ๋ง์ ๊ฐ๋ฐ์๊ฐ ๋์ผํ ๋น๋๊ธฐ ๋ก์ง์ โโ์ฌ์ฉํ๊ฒ ๋๊ณ , ์๋ก์ด ํ์์ ํฉ๋ฅ์ํค๋ ๊ฒ์ด ๋์ฑ ์ด๋ ค์์ง๋๋ค. ๋ค์ฏ ๊ฒน์ ์ค์ฒฉ ๋ก์ง์ ๋ง์ฃผํ๋ ์ด๋ณด ๊ฐ๋ฐ์๋ ์ฝ๋๊ฐ ๋ฌด์์ ํ๋์ง ์ดํดํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ๋ฟ๋ง ์๋๋ผ, ์ฝ๋๋ฅผ ์์ ํ๊ฒ ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋์ฑ ์ด๋ ค์์ง๋๋ค.
์ด๋ฌํ ์ค์ ์ฆ์์ ์ผ์ฐ ์๋ณํจ์ผ๋ก์จ ํ์ ๋ชฉํ์ ๋ง๋ ๊ณํ์ ์ธ์ธ ์ ์์ต๋๋ค. ๋ฆฌํฉํ ๋ง๋ค์ ์น์ ์์๋ ์ฝ๋ฐฑ ๊ธฐ๋ฐ ๋์์ธ์ด ์ธ์ ์๋์ ์์ํ๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ณ๋ชฉ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ํฅํ ํ์ฅ์ฑ์ ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
์ฝ๋ฐฑ ๊ธฐ๋ฐ ๋์์ธ์ด ๋ณ๋ชฉ ํ์์ด ๋๋ ์์ ์ ์ธ์ ์ธ๊ฐ?
์๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ์์ ์ผ๋ก ์ค์ฒฉ๋ ์ฝ๋ฐฑ์ผ๋ก ์๋ํ ์ ์์ง๋ง, ์ฝ๋ฐฑ ๊ธฐ๋ฐ ์ค๊ณ๋ ๊ฒฐ๊ตญ ์ฑ์ฅ, ์ ์ง ๊ด๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์์ ์ฑ์ ์ ํดํ๊ธฐ ์์ํฉ๋๋ค. ์ด๋ฌํ ํจํด์ ๊ฐ๋ฐ ์๋๊ฐ ๋๋ ค์ง๊ณ , ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ด ๊ฐ์ํ๋ฉฐ, ๋น๋๊ธฐ ํ๋ฆ์ ๊ด๋ฆฌ ๋ฐ ํ์ฅ์ด ์ด๋ ค์์ง ๋ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํฉ๋๋ค.
์ํคํ ์ฒ ๋ณ๋ชฉ ํ์์ ํ ๊ฐ์ง ์งํ๋ ๊ธฐ๋ฅ ํ์ฅ ์ ๋ฐ์ํ๋ ๋ง์ฐฐ์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๊ธฐ์กด ๋ก์ง ์ฒด์ธ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ผ ํ ๋, ์ ์ ํ ๊น์ด์ ์ฝ๋ฐฑ์ ์ ์คํ๊ฒ ์ฝ์ ํ๊ณ , ์ด์ ๋จ๊ณ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋๋ก ๋ณด์ฅํ๋ฉฐ, ์ค๋ฅ๋ฅผ ์๋์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํ ์คํธํ๊ธฐ ์ด๋ ค์ด ์ทจ์ฝํ ์์คํ ์ผ๋ก ์ด์ด์ง๋ฉฐ, ํนํ ์ฝ๋ฐฑ์ด ์ฌ๋ฌ ์๋น์ค๋ ํ์ผ ๊ฒฝ๊ณ์ ๊ฑธ์ณ ์๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ฝ๋ ๋ณต์ก์ฑ ๋ ๋ค๋ฅธ ๋ช ํํ ์งํ์ ๋๋ค. ํจ์๊ฐ ์ค์ฒฉ๋ ์ฝ๋ฐฑ์์ ๋์ธ ๋จ๊ณ ์ด์ ๊น์ด ๋ค์ด๊ฐ๋ฉด, ๊ทธ ๋ ผ๋ฆฌ๋ฅผ ์ดํดํ๋ ๋ฐ ํ์ํ ์ธ์ง์ ๋ ธ๋ ฅ์ด ์๋นํด์ง๋๋ค. ์ด๋ฌํ ๋ณต์ก์ฑ์ ๊ฐ๋ฐ ์๋๋ฅผ ๋ฆ์ถ๊ณ , ์ธ์ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ๋์ด๋ฉฐ, ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด ๊ด๋ฒ์ํ ๋ฌธ์ํ๋ ์ฝ๋ ์ฃผ์์ด ํ์ํฉ๋๋ค.
ํ ์คํธ์๋ ๋ถ์ ์ ์ธ ์ํฅ์ด ์์ต๋๋ค. ์ฝ๋ฐฑ์ ์ฌ์ฉํ๋ฉด ๊ฐ ํจ์๊ฐ ์ ํํ ํ์ด๋ฐ์ด๋ ์ผ๋ จ์ ์ด์ ๋์์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ ๋ก์ง ๋จ์๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ด๋ ค์์ง๋๋ค. ์ข ์์ฑ์ ๋ชจ์ํ๋ ์์ ์ ๋์ฑ ๋ ธ๋ ์ง์ฝ์ ์ด๋ฉฐ, ๋น๋๊ธฐ ์คํจ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๊ณ ๊ฒ์ฆํ๊ธฐ๊ฐ ๋ ์ด๋ ต์ต๋๋ค. ์์ธก ๊ฐ๋ฅํ ํ๋ฆ ์ ์ด๊ฐ ์๋ค๋ฉด ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ ํ๋ณดํ ์ ์์ง๋ง ์๋ฏธ ์๋ ๊น์ด๊ฐ ๋ถ์กฑํฉ๋๋ค.
ํ ํจ์จ์ฑ ๋ํ ์ ํ๋ ์ ์์ต๋๋ค. ํ์ ํ๊ฒฝ์์ ์ฝ๋ฐฑ ๋ชจ๋ธ์ ๊ฐ๋ฐ์๋ง๋ค ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ์์ด ์ผ๊ด์ฑ์ ๋จ์ด๋จ๋ฆฝ๋๋ค. ์ด๋ค ๊ฐ๋ฐ์๋ ํน์ ํจํด์ ๋ฐ๋ฅด๊ณ , ์ด๋ค ๊ฐ๋ฐ์๋ ๋ค๋ฅธ ํจํด์ ๋ฐ๋ฅด๋ฉฐ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ๋ก์ ํธ ์คํ์ผ์ด ์๋ก ๋ค์์ด๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ๋ถ์ผ์น๋ ์จ๋ณด๋ฉ, ์ฝ๋ ๊ฒํ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
๋๋๊ฒ๋ ์ฑ๋ฅ์๋ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ฝ๋ฐฑ์ ๋น์ฐจ๋จํ์ด์ง๋ง, ๊น์ด ์ค์ฒฉ๋ ๊ตฌ์กฐ๋ ๋ก์ง ์ค๋ณต, ์ค๋ณต๋ ๋น๋๊ธฐ ๋จ๊ณ ๋๋ ๋นํจ์จ์ ์ธ ์ฒด์ด๋์ ์ ๋ฐํ ์ ์์ต๋๋ค. ๋์ฑ์ด, ์ฝ๋ฐฑ์ ๋ณ๋ ฌ ๋๋ ์ผ๊ด ์์ ์์ ์คํ์ ์ต์ ํํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
์ด ๋จ๊ณ์์๋ ์ฝ๋ฐฑ ๋ชจ๋ธ์ ๋ ์ด์ ์ค์ฉ์ ์ธ ์ ํ์ด ์๋๋๋ค. ํ์ฅ์ฑ, ํ ์คํธ ๋ฐ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด Promise ๋๋ async/await๋ก ์ ํํ๋ ๊ฒ์ ๋จ์ํ ๊ธฐ์ ์ ๊ฒฐ์ ์ด ์๋๋ผ ์ ๋ต์ ์ธ ๊ฒฐ์ ์ด ๋ฉ๋๋ค. ๋ค์ ์น์ ์์๋ ์ด๋ฌํ ๋ ๊ฑฐ์ ํจํด์ ๋จ๊ณ๋ณ๋ก ๋ฆฌํฉํ ๋งํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ , ๊น์ด ์ค์ฒฉ๋ ์ฝ๋ฐฑ์ Promise ๊ธฐ๋ฐ ํ๋ฆ์ผ๋ก ๋ณํํ๋ ์ค์ฉ์ ์ธ ๊ธฐ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํจ๊ณผ์ ์ธ ๋ฆฌํฉํ ๋ง ์ ๋ต
์ฝ๋ฐฑ์ด ๋ง์ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๋ ๊ฒ์ ํนํ ์ฌ๋ฌ ๊ณ์ธต์ ๋น๋๊ธฐ ๋ก์ง์ด ๋ณต์กํ๊ฒ ์ฝํ ์์ ๋ ๋ถ๋ด์ค๋ฌ์ธ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ตฌ์กฐํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ํ ๊ณผ์ ์ ์ํํ๊ณ ์ ์ง์ ์ผ๋ก ์งํํ ์ ์์ต๋๋ค. ๋ชฉํ๋ ๋ชจ๋ ๊ฒ์ ํ๊บผ๋ฒ์ ๋ค์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ์ฅ ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ์ ๋จ์ํํ๊ณ ๋ก์ง ํ๋ฆ์ ๋ํ ์ ์ด๊ถ์ ๋์ฐพ์ผ๋ฉฐ ์ ์ง ๊ด๋ฆฌ, ํ ์คํธ ๋ฐ ํ์ฅ์ด ๋ ์ฌ์ด ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ด ์น์ ์์๋ ๋ ๊ฑฐ์ ํ๊ฒฝ์์๋ ๋น๋๊ธฐ ๋ก์ง์ โโํ์ด๋ด๋ ๋ฐ ๋์์ด ๋๋ ํ์ ๊ธฐ์ ์ ์๊ฐํฉ๋๋ค.
๋น๋๊ธฐ ๋จ์ ๋ถ๋ฆฌ
์ฝ๋ฐฑ ํฌ ๋ฆฌํฉํ ๋ง์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๊ฐ ๋น๋๊ธฐ ์์ ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ํ์ผ ์ฝ๊ธฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ก์ธ์ค, HTTP ์์ฒญ ๋ฑ ๋น๋๊ธฐ ์์ ์ด ์ํ๋๋ ์์น๋ฅผ ํ์ ํ๊ณ ํด๋น ๋ก์ง์ ๋ณ๋์ ๋ช ๋ช ๋ ํจ์๋ก ์ถ์ถํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋น๋๊ธฐ ๋ก์ง์ด ์ธ๋ผ์ธ์ผ๋ก ๊น์ด ์ค์ฒฉ๋๋ฉด ๊ฒฐํฉ๋๊ฐ ๋์์ง๊ณ ํ ์คํธ๋ ์ฌ์ฌ์ฉ์ด ์ด๋ ค์์ง๋๋ค. ๋น๋๊ธฐ ๋ก์ง์ โโ๋ถ๋ฆฌํ๋ฉด ๊ฐ๋ ์ฑ์ด ํฅ์๋๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ผ ์ฝ๊ธฐ๋ฅผ ์ฝ๋ฐฑ ์ฒด์ธ์ ๋ด์ฅํ๋ ๋์ ์ ์ฉ ํจ์๋ก ์ฎ๊ธธ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ๋จ๊ณ๊ฐ ๋ ๋ช ํํด์ง๊ณ ํ๋ก์ธ์ค์ ํ ๋ถ๋ถ์ฉ ๊ฐ์ ํ๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค. ๋ํ ๋์ค์ ํด๋น ์์ ์ Promise๋ก ๋ํํ ์ ์๋ ๊ธฐ๋ฐ๋ ๋ง๋ จ๋ฉ๋๋ค.
์ฝ๋ฐฑ์ ์ฝ์์ผ๋ก ๊ฐ์ธ๊ธฐ
๊ฐ๋ณ ๋น๋๊ธฐ ์์
์ ๋ถ๋ฆฌํ ํ, ๋ค์ ๋จ๊ณ๋ Promise๋ก ๊ฐ์ธ๋ ๊ฒ์
๋๋ค. ์ด๋ ์ต์ ๋น๋๊ธฐ ๊ตฌ๋ฌธ์ผ๋ก ์ ํํ๊ธฐ ์ํ ๊ธฐ๋ฐ์
๋๋ค. JavaScript์ Promise ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์ฝ๋ฐฑ ๊ธฐ๋ฐ ํจ์๋ฅผ Promise๋ฅผ ๋ฐํํ๋ ๋ฒ์ ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฝ๋ฐฑ์ ์ ๋ฌํ๋ ๋์ , ๊ฒฐ๊ณผ๋ฅผ Resolveํ๊ฑฐ๋ Rejectํฉ๋๋ค. ์ด๋ฌํ ์บก์ํ๋ ํจ์๋ฅผ ๋จ์ํํ๊ณ ๋ค๋ฅธ ํจ์์ ํตํฉํ ์ ์๋๋ก ํฉ๋๋ค. .then() ์ฒด์ธ ๋๋ async/await ๋ธ๋ก. ๋ํ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์ค์ ์ง์คํํ์ฌ ๋ชจ๋ ์ค์ฒฉ ์์ค์์ ๋ฐ๋ณต์ ์ธ ํ์ธ ์์
์ ์์ฑ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ ํจ์์ ํต์ฌ ๋์์ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์๋ ๋ ํฐ ๋น๋๊ธฐ ํ๋ฆ์ ๋ํ ์ ํฉ์ฑ์ ํฌ๊ฒ ๊ฐ์ ํฉ๋๋ค. ๋ํ๋ ์ด๋ฌํ ํจ์๋ ๋ ๊น๋ํ๊ณ ํํํ ์ฝ๋๋ฒ ์ด์ค์ ๊ธฐ๋ฐ์ด ๋ฉ๋๋ค.
Flatten Control Flow๋ฅผ ์ฌ์ฉํ์ฌ .then() ์ ์ฌ์ฌ
์ด์ ์ฌ๋ฌ ์์
์ด Promises์ ๋ํ๋์์ผ๋ฏ๋ก ๋ค์์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ ์ด ํ๋ฆ์ ํํํํ ์ ์์ต๋๋ค. .then(). ์ด ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด ๊น๊ฒ ์ค์ฒฉํ์ง ์๊ณ ๋ ๋น๋๊ธฐ ๋จ๊ณ๋ฅผ ์์ฐจ์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค. ๊ฐ .then() ๋ธ๋ก์ ์ด์ ์ฐ์ฐ์ ์ถ๋ ฅ์ ๋ฐ์ ๋ค์ ์ฐ์ฐ์ Promise๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ ๋๊ธฐ์ ๋
ผ๋ฆฌ๋ฅผ ๋ฐ์ํ๋ ์์ธก ๊ฐ๋ฅํ ์ ํ ๊ตฌ์กฐ๋ฅผ ์ ์งํฉ๋๋ค. ๋ํ ๊ฐ ๋ธ๋ก์ ๋ชฉ์ ์ ๋ถ๋ฆฌํ์ฌ ํฅํ ๋
์์ ๋ช
ํ์ฑ์ ํฅ์ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ฑ
์์ ๋ฐ๋ฅธ ์ค์ฒฉ ๋ฐ ๊ทธ๋ฃนํ ๋
ผ๋ฆฌ๋ฅผ ์ ๊ฑฐํจ์ผ๋ก์จ ์ฝ๋ฐฑ์ด ์ ๋ฐํ๋ ์๊ฐ์ , ์ธ์ง์ ๋
ธ์ด์ฆ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ฌํ ํํํ๋ ์์ ํ ์ ํํ๊ธฐ ์ ์ ์ข
์ข
์ฌ์ฉ๋๋ ๊ณผ๋๊ธฐ์ ๋จ๊ณ์
๋๋ค. async/await ํนํ Promises๋ฅผ ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์์ง๋ง ๊ตฌ์กฐ๊ฐ ๋ถ์กฑํ ์ฝ๋๋ฒ ์ด์ค์์ ์ ์ฉํฉ๋๋ค.
์ค๋ฅ ์ฒ๋ฆฌ ์ค์ํ
์ฝ๋ฐฑ ๊ธฐ๋ฐ ์ฝ๋์์๋ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ์ฒด์ธ์ ๋ชจ๋ ๋จ๊ณ์ ์กด์ฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ค๋ณต๊ณผ ์ผ๊ด๋์ง ์์ ์๋ต์ด ๋ฐ์ํฉ๋๋ค. Promise๋ก ๋ฆฌํฉํ ๋งํ๋ฉด ์ค์ ์ง์ค์์ผ๋ก ์ค๋ฅ๋ฅผ ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค. ๋จ์ผ .catch() ์ฒด์ธ ๋์ ๋ธ๋ก์ ์ํ์ค์ ๋ชจ๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด ๋
ผ๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ ์ถ์ ์ฑ์ ํฅ์์ํต๋๋ค. ๋ํ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ๊น์ด ์ค์ฒฉ๋ ๊ตฌ์กฐ์์ ํํ ๋ฐ์ํ๋ ์ค๋ฅ ์กฐ๊ฑด์ ๊ฐ๊ณผํ ๊ฐ๋ฅ์ฑ์ ์ค์ฌ์ค๋๋ค. ๋ชจ๋ ์์ธ๊ฐ ์์ธก ๊ฐ๋ฅํ ํ ๊ณณ์ผ๋ก ์ง์ค๋๋ฏ๋ก ์ค์ ์ง์ค์ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ์ฝ๋์ ๋ณต์๋ ฅ์ ๋์ฌ์ค๋๋ค. ๋์ค์ async/await, ์ด ํจํด์ ๋จ์ผ์ ๊น๋ํ๊ฒ ๋งคํ๋ฉ๋๋ค. try/catch ๋ธ๋ก. ๊ทธ ๊ฒฐ๊ณผ, ์์ฑํ๊ธฐ ์ฌ์ธ ๋ฟ๋ง ์๋๋ผ ํ
์คํธ์ ์ ์ง ๊ด๋ฆฌ๋ ๋ ์ฌ์ด ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ํํฅ์ ๋ฆฌํฉํ ๋ง
๋๊ท๋ชจ ์ฝ๋ฐฑ ๋ฆฌํฉํ ๋ง์ ์ค์ฒฉ ๊ตฌ์กฐ์ ๊ฐ์ฅ ๊น์ ์ง์ ์์ ์์ํด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ๋ด๋ถ์ ์ธ ์ฝ๋ฐฑ๋ถํฐ ์์ํ์ฌ Promise๋ก ๊ฐ์ธ๊ณ ํ ๋ฒ์ ํ ๊ณ์ธต์ฉ ์ ์ง์ ์ผ๋ก ์ธ๋ถ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํธ์ถ ๋ก์ง์ด ์์๋์ง ์๊ณ ๊ฐ ๋ณํ์ด ๋ถ๋ฆฌ๋์ด ํ ์คํธ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅ๋ฉ๋๋ค. ์ํฅ์ ๋ฆฌํฉํ ๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ง์ ์ผ๋ก ๊ฒ์ฆํ ์ ์๋๋ก ํฉ๋๋ค. ๊ฐ Promise ๊ธฐ๋ฐ ํจ์๊ฐ ์ฝ๋ฐฑ์ ๋์ฒดํจ์ ๋ฐ๋ผ ์์ ๋ก์ง์ ๋จ์ํํ๊ฑฐ๋ ์ต์ ๊ตฌ๋ฌธ์ผ๋ก ๋ณํํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํ๊ท ์ํ์ ์ค์ด๊ณ ํ์ด ๋ค๋ฅธ ๊ฐ๋ฐ์ ์ค๋จํ์ง ์๊ณ ๋ ์ธก์ ๊ฐ๋ฅํ ์ง์ ์ ์ด๋ฃฐ ์ ์๋๋ก ๋์์ค๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ์ ์ง์ ์ธ ์ ๋ต์ ์ทจ์ฝํ ์ฒด์ธ์ ๋ชจ๋ํ๋๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋น๋๊ธฐ ๊ตฌ์ฑ ์์๋ก ๋์ฒดํฉ๋๋ค.
์ฝ๋ฐฑ์์ ์ฝ์์ผ๋ก์ ๋จ๊ณ๋ณ ๋ง์ด๊ทธ๋ ์ด์
์ฝ๋ฐฑ ๊ธฐ๋ฐ ๋ก์ง์์ Promise๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฒด๊ณ์ ์ด๊ณ ์ํ ๊ด๋ฆฌ์ ์ธ ๋ฐฉ์์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ ์ฒด ๋ชจ๋์ ํ ๋ฒ์ ๋ค์ ์์ฑํ๋ ๋์ , ํ๋ก์ฐ์ ๊ฐ๋ณ ๋ถ๋ถ์ ์ ์ง์ ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค. ์ด ์น์ ์์๋ ๊น์ด ์ค์ฒฉ๋ ์ฝ๋ฐฑ์ ์ถ์ , ํ ์คํธ ๋ฐ ํ์ฅํ๊ธฐ ์ฌ์ด Promise ๊ธฐ๋ฐ ํ๋ก์ฐ๋ก ๋ฆฌํฉํ ๋งํ๋ ์ค์ฉ์ ์ธ ๋จ๊ณ๋ณ ์ ๊ทผ ๋ฐฉ์์ ์ค๋ช ํฉ๋๋ค. ์ด๋ฌํ ๋จ๊ณ๋ ๋ฐฑ์๋ ์๋น์ค๋ถํฐ ํ๋ฐํธ์๋ ํ๋ ์์ํฌ๊น์ง ๋ชจ๋ JavaScript ํ๊ฒฝ์ ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ์ต์ async/await ๊ตฌ๋ฌธ์ ๋์ ํ๊ธฐ ์ํ ํ ๋๋ฅผ ๋ง๋ จํฉ๋๋ค.
๊ฐ์ฅ ๋ง์ด ์ค์ฒฉ๋ ์ฝ๋ฐฑ๋ถํฐ ์์ํ์ธ์
๋ ผ๋ฆฌ ์ฒด์ธ์์ ๊ฐ์ฅ ์์ชฝ์ ์๋ ์ฝ๋ฐฑ์ ํ์ ํ๋ ๊ฒ๋ถํฐ ์์ํ์ธ์. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ๊น์ ์ค์ฒฉ ๋จ๊ณ๋ก, ํ๋์ ๋น๋๊ธฐ ์์ ์ด ์ฌ๋ฌ ๊ฐ์ ์ด์ ์์ ์ ์์กดํ๋ ๋จ๊ณ์ ๋๋ค. ์ด ๋ถ๋ถ์ ๋จผ์ ๋ฆฌํฉํ ๋งํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ์ธ๋ถ๋ก ํ๊ธ๋์ด ๊ด๋ จ ์๋ ์ฝ๋๋ฅผ ์์์ํค์ง ์๋๋ก ํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ฅ ์์ ๋น๋๊ธฐ ์์ ์ Promise๋ก ๋ํํ๋ฉด ๋๋จธ์ง ๊ตฌ์กฐ์์ ๋ถ๋ฆฌ๋์ด ์ถ๋ก ํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ๋ณํ๋๋ฉด ํ ๋จ๊ณ ๋ ๋ฐ๊นฅ์ชฝ์ผ๋ก ์ด๋ํ์ฌ ๋ถ๋ชจ ์ฝ๋ฐฑ์ ๋ฆฌํฉํ ๋งํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ ์ฒด ํ๋ฆ์ด ํ ๋ฒ์ ๋์ด์ง๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ๋ช ํํ ๋ง์ด๊ทธ๋ ์ด์ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฆฌํฉํ ๋ง๋ ๊ฐ ๊ณ์ธต์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆํ ์ ์์ผ๋ฏ๋ก ํ ์คํธ๊ฐ ๋ ๊ฐ๋จํด์ง๊ณ , ํ ๋ด์์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ ์์ ํ๊ณ ์ฝ๊ฒ ๊ฒํ ํ ์ ์์ต๋๋ค.
Promise ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฐฑ์ ๋ํํฉ๋๋ค.
Promise ์์ฑ์๋ ๊ธฐ์กด ๋น๋๊ธฐ ํจ์๋ฅผ ๋ณํํ๋ ํต์ฌ ๋๊ตฌ์
๋๋ค. resolve ๋ฐ reject ์ธ์๋ฅผ ๊ฐ๋ ๋จ์ผ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฐฑ์ ์ฑ๊ณต ๋ฐ ์คํจ ๊ฒฝ๋ก๋ฅผ ๋ช
ํํ๊ฒ ๋งคํํ ์ ์์ต๋๋ค. ์ด ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฐฑ ๊ธฐ๋ฐ ํจ์๋ฅผ Promise๋ฅผ ๋ฐํํ๋ ํจ์๋ก ๋ณํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด์ ์ ์ฝ๋ฐฑ์ ๋ฐ๋ ํ์ผ ์ฝ๊ธฐ ํจ์๋ฅผ ์ด์ ํ์ผ ๋ด์ฉ์ resolveํ๊ฑฐ๋ ์ค๋ฅ๋ฅผ rejectํ๋๋ก ๋ค์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์บก์ํ๋ ์์
๋ก์ง๊ณผ ์ฌ์ฉ ๋ฐฉ์์ ๋ถ๋ฆฌํ์ฌ ํธ์ถ ์ฝ๋๊ฐ ์ถ๊ฐ ์ค์ฒฉ ์์ด ์ฌ๋ฌ ๋น๋๊ธฐ ๋จ๊ณ๋ฅผ ์ฐ๊ฒฐํ ์ ์๋๋ก ํฉ๋๋ค. ๋ํ, ๊ฑฐ๋ถ๋ Promise๊ฐ ์๋์ผ๋ก ์คํจ๋ฅผ ๋ค์ด์คํธ๋ฆผ์ผ๋ก ์ ํํ๋ฏ๋ก ์ค๋ฅ ์ฒ๋ฆฌ์ ์ผ๊ด์ฑ์ด ํฅ์๋ฉ๋๋ค. .catch() ํธ๋ค๋ฌ ๋๋ try/catch ๋น๋๊ธฐ ํจ์์ ๋ธ๋ก.
์ฝ๋ฐฑ ์ฒด์ธ์ ์ฝ์ ์ฒด์ธ์ผ๋ก ๊ต์ฒด
์ฌ๋ฌ ์ฝ๋ฐฑ์ด Promises๋ก ๋ํ๋๋ฉด ๊ธฐ์กด์ ์ค์ฒฉ ์ฒด์ธ์ ํ๋ซ ์ํ์ค๋ก ๊ต์ฒดํ ์ ์์ต๋๋ค. .then() ํธ์ถํฉ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ ์๊ฐ์ ๋ช
ํ์ฑ์ ํฅ์์ํฌ ๋ฟ๋ง ์๋๋ผ ๋ช
ํํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์์
ํ๋ฆ์ ์ ์ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ฐ๊ฐ .then() ์ด์ Promise์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ์ Promise๋ฅผ ๋ฐํํ๋ฏ๋ก ๋๊ธฐ ์คํ๊ณผ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ๋ณต์กํ ๋ก์ง์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฒด์ด๋ ๋ฐฉ์์ ์ํ ์ ํ, ์ค๊ฐ ๊ฐ ๋ฐ ์ต์ข
๊ฒฐ๊ณผ์ ๋ํ ์ถ๋ก ์ ๋ ์ฝ๊ฒ ํด์ค๋๋ค. ๋ํ ์ฒด์ธ์ ๊ฐ ํจ์๊ฐ ๋จ์ผ ์์
์๋ง ์ง์คํ๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ ์์
์ ์๋ก ๋ถ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ณด๋์ค๋ก, .catch() ์ฒด์ธ์ ๋๋ถ๋ถ์์๋ ์ค๋ฅ ๊ด๋ฆฌ๋ฅผ ์ค์ํํ์ฌ ์นจ๋ฌต์ ์คํจ์ ๋ถ์ฐ๋ ์์ธ ๋
ผ๋ฆฌ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๋ฐ๋ณต๋๋ ํจํด์ ์ ํธ๋ฆฌํฐ ํจ์๋ก ๋ฆฌํฉํ ๋ง
๋ง์ด๊ทธ๋ ์ด์ ๊ณผ์ ์์ ์ ์ฌํ ๋ก์ง์ ์ํํ์ง๋ง ์ฝ๊ฐ์ ๋ณํ์ด ์๋ ๋ฐ๋ณต์ ์ธ ์ฝ๋ฐฑ ํจํด์ ์ ํ๋ ๊ฒ์ ํํ ์ผ์ ๋๋ค. ๊ฐ ์ธ์คํด์ค๋ฅผ ์๋์ผ๋ก ๋ฆฌํฉํ ๋งํ๋ ๋์ , Promise๋ฅผ ๋ฐํํ๋ ์ ํธ๋ฆฌํฐ ํจ์๋ก ์ถ์ํํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์. ์๋ฅผ ๋ค์ด, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ถ๋ถ์์ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ๋๋ ๊ฐ์ ธ์ค๊ธฐ ๋ก์ง์ โโ์ํํ๋ ๊ฒฝ์ฐ, ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๊ณ Promise๋ฅผ ๋ฐํํ๋ ์ผ๋ฐ ํจ์๋ก ํ ๋ฒ ๋ํํ๋ฉด ๋ฆฌํฉํ ๋ง ์๋๊ฐ ํฅ์๋ ๋ฟ๋ง ์๋๋ผ ์ค๋ณต์ฑ๊ณผ ์ ์ฌ์ ์ธ ๋ถ์ผ์น๋ ์ค์ผ ์ ์์ต๋๋ค. ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํธ๋ฆฌํฐ ํจ์๋ ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์์ ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ ๋ฐฉ์์ ํ์คํํ๊ณ ํ์ ๊ฐ์ ๋ ๋์ ์คํ ๋ฐฉ์์ ์ฅ๋ คํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ํ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์์ ํ์ง ์๊ณ ๋ ๋ก๊น , ์ฌ์๋ ๋ก์ง ๋๋ ์๊ฐ ์ด๊ณผ์ ๊ฐ์ ์ถ๊ฐ์ ์ธ ๊ฐ์ ์ฌํญ์ ๋์ค์ ์ฝ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
๊ณ์ํ๊ธฐ ์ ์ ๊ฐ ๋จ๊ณ๋ฅผ ํ ์คํธํ์ธ์
์ฆ๋ถ์ ๋ฆฌํฉํ ๋ง์ ์ฌ์ฉํ๋ฉด ์ ๋ฐ์ดํธ๋ ๋ก์ง์ ์งํ ์ค์ ํ ์คํธํ ์ ์์ผ๋ฉฐ, ์ด๋ ํ๋ก๋์ ์ฝ๋ ์์ ์ ํ์์ ์ ๋๋ค. ํ๋ ๋จ๊ณ์ ์ฝ๋ฐฑ์ Promise๋ก ๋ณํํ ํ, ์๋ก์ด ํ๋ฆ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ๋ ํ ์คํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ์ธ์. ์ฌ๊ธฐ์๋ ์ฑ๊ณต ๋ฐ ์คํจ ์๋๋ฆฌ์ค๋ฅผ ๋ชจ๋ ํ ์คํธํ์ฌ ํด๊ฒฐ ๋ฐ ๊ฑฐ๋ถ ๋ก์ง์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค. ๊ฐ ๋จ๊ณ์์ ํ ์คํธํ๋ฉด ๊ธฐ๋ฅ์ ๊ฒ์ฆํ ๋ฟ๋ง ์๋๋ผ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ขฐ๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ํ๊ท ๋ฐ์ ์ํ์ ์ค์ด๊ณ ๊ฐ๋ฐ์์ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ๋จ์ถํ ์ ์์ต๋๋ค. ๊ณ์ธต์ ํ ์คํธํ๊ณ ํ์ธํ ํ์๋ ์ฝ๋ฐฑ ๊ตฌ์กฐ์ ๋ค์ ๋ถ๋ถ์ ๋ฆฌํฉํ ๋งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ๋ฐ ์๋์ ํฐ ์ฐจ์ง์ ์ฃผ์ง ์์ผ๋ฉด์ ์์ ํ ํ๋ํ๋ ๋น๋๊ธฐ ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค์์ "์ฝ๋ฐฑ ๊ฐ๋ฅ" ํจ์๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ
๋ฆฌํฉํ ๋ง์ ์์ํ๊ธฐ ์ ์ ์ฝ๋๋ฒ ์ด์ค์์ ์ด๋ค ํจ์๊ฐ ์ฝ๋ฐฑ ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์๋์ง ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ํจ์๋ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ณด์ด๋ฉฐ, ๋ก์ง์์ ๊ฐ์ฅ ์ทจ์ฝํ๊ฑฐ๋ ์ดํดํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ ๋ํ๋ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ํจ์๋ฅผ ๋น ๋ฅด๊ฒ ํ์ ํ๋ ๋ฐฉ๋ฒ์ ์ตํ๋ฉด ๋ฆฌํฉํ ๋ง ์์ ์ ๊ณํํ๊ณ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ฐ์ฅ ๋ถ๋ช
ํ ์งํ ์ค ํ๋๋ ๋ค๋ฅธ ํจ์๋ฅผ ๋ง์ง๋ง ์ธ์๋ก ๋ฐ๋ ํจ์์
๋๋ค. ์๋ฅผ ๋ค์ด, fs.readFile(path, options, callback) or db.query(sql, callback) ์ด๋ฌํ ์๊ทธ๋์ฒ๋ ๊ณ ์ ์ ์ธ ์๊ทธ๋์ฒ์
๋๋ค. ์ด๋ฌํ ์ฝ๋ฐฑ์ ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฅ ๋๋ ๊ฒฐ๊ณผ ๊ฐ์ฒด๋ฅผ ์์ ํ๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ์ด๋ฌํ ์๊ทธ๋์ฒ๊ฐ ์์ผ๋ฉด Promise ๊ธฐ๋ฐ ๋ฒ์ ์ผ๋ก ๋ณํํ ์ ์๋ ๊ธฐํ๊ฐ ์์์ ๋ํ๋
๋๋ค.
์ด๋ฌํ ํจ์ ์ค ๋ค์๋ ์ด์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ก์ง์ด ๊ฒฐ์ ๋๋ ๋น๋๊ธฐ ํ๋ฆ ๋ด์์๋ ๋ฐ๊ฒฌ๋ฉ๋๋ค. ํจ์๊ฐ ๋ค๋ฅธ ํจ์ ๋ด์ ๊น์ด ์ค์ฒฉ๋์ด ์๊ณ , ํจ์์ ์ฑ๊ณต ๋๋ ์คํจ์ ๋ฐ๋ผ ์ถ๊ฐ ๋ถ๊ธฐ ๋ก์ง์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ๊ฑฐ์ ํ์คํ ์ฝ๋ฐฑ์ ์ฒ๋ฆฌํ๊ณ ์์ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์ค์ฒฉ์ ์ต์ ๊ตฌ๋ฌธ ์ง์ ์์ด ์์ฑ๋ ์ค๋๋ ์ฝ๋๋ ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฅ ์ฌ๊ฐํ ๊ฒฝํฅ์ด ์์ต๋๋ค.
์ฝ๋ฐฑ ๊ฐ๋ฅ ํจ์์๋ ์ข
์ข
๋ค์๊ณผ ๊ฐ์ ํํ์ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค. if (err) or if (error) ๋ณธ๋ฌธ ๋ด๋ถ. ์ด๋ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ ๊ฑฐ์ ํจํด์ด๋ฉฐ, ํจ์๊ฐ ๊ตฌ์กฐํ๋ Promise ๊ฑฐ๋ถ๋ฅผ ์ฌ์ฉํ์ง ์์์ ๋ํ๋
๋๋ค. ์ด๋ฌํ ์กฐ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ฒฝ๋ก ์ฒ๋ฆฌ๊ธฐ, ๋น๋ ์คํฌ๋ฆฝํธ ๋๋ ๋ฏธ๋ค์จ์ด ์ฒด์ธ์ ๋ํ๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ํจํด์ ๊ฒ์ํ๋ ๊ฒ๋ ๋์์ด ๋ฉ๋๋ค. function (err, result) ๋๋ ์ต์ข
์ธ์๋ก ์ ๋ฌ๋๋ ์ต๋ช
ํจ์. ์ด๋ ์ ํต์ ์ธ ์ฝ๋ฐฑ ์ค๊ณ์ ๋น๋ฒํ ์งํ์
๋๋ค. ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฐ์ฌํ ๋ ํจ์ ๋งค๊ฐ๋ณ์์์ ์ด๋ฌํ ๋ฌธ๊ตฌ๋ฅผ ์ค์บํ๋ฉด ์ฃผ์๊ฐ ํ์ํ ๋ถ๋ถ์ ๋น ๋ฅด๊ฒ ํ์
ํ ์ ์์ต๋๋ค.
์ต์ ํ๊ฒฝ์์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง๋ง ๋ถ์์ฉ์ด๋ ์ค๋ฅ ๋ณด๊ณ ๋ฅผ ์ํด ์ฝ๋ฐฑ์ ์ฌ์ฉํ๋ ํ์ด๋ธ๋ฆฌ๋ ํจ์๋ ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํจ์๋ ๋๊ธฐ ๋์๊ณผ ๋น๋๊ธฐ ๋์์ ํผ๋์ค๋ฝ๊ฒ ํผํฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ฆฌํฉํ ๋งํ ๋๋ ๋จผ์ ์ง์ ํ ๋น๋๊ธฐ ๋์์ ๋ถ๋ฆฌํ๊ณ ๋ณํํ ํ ์ฃผ๋ณ ์ฝ๋๋ฅผ ๋จ์ํํด์ผ ํฉ๋๋ค.
์ฝ๋ฐฑ ๊ฐ๋ฅํ ํจ์๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์๋ณํ๋ ๋ฒ์ ๋ฐฐ์ฐ๋ฉด ๋น๋๊ธฐ ์ฝ๋ ํ๊ฒฝ์ ์ง๋๋ฅผ ๊ทธ๋ฆด ์ ์์ต๋๋ค. ์ด๋ฌํ ์ดํด๋ ๋ฆฌํฉํ ๋ง ์ฌ์ ์ ๋ฐฉํฅ์ ์ ์ํ์ฌ ๊ฐ์ฅ ํจ์จ์ ์ด๊ณ ์ํ๋๊ฐ ๋ฎ์ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ๋ณํํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ ์ ์์ง ์๊ณ ์ค๋ฅ ์ฒ๋ฆฌํ๊ธฐ: .catch() vs try/catch
์ฝ๋ฐฑ์์ Promise๋ ๋น๋๊ธฐ ํจ์๋ก ์ ํํ ๋ ๊ฐ์ฅ ํฐ ๋ง์ฐฐ ์ง์ ์ค ํ๋๋ ์ค๋ฅ ์ฒ๋ฆฌ์ ๋๋ค. ์ฝ๋ฐฑ ๋ก์ง์ ์ค๋ฅ ์ฒ๋ฆฌ ์ฑ ์์ ์ฌ๋ฌ ๊ณ์ธต์ ๋ถ์ฐ์ํค๋ ๊ฒฝํฅ์ด ์์ด, ์ข ์ข ์กฐ์ฉํ ์ค๋ฅ๋ ๋ฐ๋ณต์ ์ธ ์กฐ๊ฑด๋ฌธ์ ๋ฐ์์ํต๋๋ค. Promise์ ๋น๋๊ธฐ ํจ์๋ ๋ ๊น๋ํ๊ณ ์ค์ํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ์ง๋ง, ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํด์ผ๋ง ๊ฐ๋ฅํฉ๋๋ค.
์ฝ๋ฐฑ ํผ๋: ๋ชจ๋ ๊ณณ์์ ์ค๋ฅ ๋ฐ์
์ฝ๋ฐฑ ๊ธฐ๋ฐ ์ฝ๋์์ ์ค๋ฅ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ํ์ธ๋๋ ์ฝ๋ฐฑ ํจ์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ฉ๋๋ค. if (err) return์ด ๋
ผ๋ฆฌ๋ ์ฌ์ฌ์ ๋ชจ๋ ๋จ๊ณ์์ ๋ฐ๋ณต๋ฉ๋๋ค. ํ๋๋ฅผ ๋์น๋ฉด if (err) ๊ทธ๋ฆฌ๊ณ ์ค๋ฅ๋ ์กฐ์ฉํ ์งํ๋๊ฑฐ๋ ๋ค์ด์คํธ๋ฆผ์ผ๋ก ์ถฉ๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๊ฐ ์ฌ๋ฌ ์ค์ฒฉ ๊ณ์ธต์ ๊ฑธ์ณ ์ฆํญ๋๋ฉด ์ทจ์ฝํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ด ์ค๋ฅ ํ๋ฆ์ด ๋ฐ์ํฉ๋๋ค.
์ค์ํํ์ฌ .catch()
Promises๋ก ๋ฆฌํฉํ ๋งํ ๋, .catch() ๋น์ ์ ๊ฐ์ฅ ์นํ ์น๊ตฌ๊ฐ ๋ ๊ฒ์
๋๋ค. ๋ชจ๋ ๋ ๋ฒจ์์ ์ค๋ฅ๋ฅผ ์๋์ผ๋ก ํ์ธํ๋ ๋์ , .catch() ํธ๋ค๋ฌ๋ ์ฒด์ธ์ ๋ง์ง๋ง์ ์์นํ์ฌ ์ด์ Promise์์ ๋ฐ์ํ ๊ฑฐ๋ถ๋ฅผ ๊ฐ๋ก์ฑ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ์ค๋ณต์ ์ค์ผ ๋ฟ๋ง ์๋๋ผ ์์ธก ๊ฐ๋ฅํ ์ค๋ฅ ๊ฒฝ๋ก๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค.
์ด ํจํด์์๋ Promise๊ฐ ์คํจํ๋๋ผ๋ ์ค๋ฅ๊ฐ ํ ๊ณณ์์ ๊ฐ์ง๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ์ด ํ๋ฆ์ ๋ ์ฝ๊ฒ ์ฝ๊ณ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค.
์์ฉ try/catch async/await์์
๋์ฑ ๋ฆฌํฉํ ๋งํ๋ฉด async/await๋์ผํ ์์น์ด ์ ์ฉ๋์ง๋ง ๊ตฌ๋ฌธ์ด ๋ ๋ช
ํํฉ๋๋ค. ๋น๋๊ธฐ ๋
ผ๋ฆฌ๋ฅผ try/catch ๋ธ๋ก์ ์ฌ์ฉํ๋ฉด ๋น์ฐจ๋จ ๋์์ ์ ์งํ๋ฉด์ ๋๊ธฐ ์ค๋ฅ ์ฒ๋ฆฌ์ ์ต์ํ ๋ชจ์ต์ ๋ณต์ํ ์ ์์ต๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ๋ฌ ๋น๋๊ธฐ ๋จ๊ณ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ทธ๋ฃนํํด์ผ ํ ๋ ๋น์ ๋ฐํฉ๋๋ค. ์ผ๋ จ์ ์์ ์ ๋ํด ๋จ์ผ ์ค๋ฅ ๊ฒฝ๊ณ๋ฅผ ์์ฑํ๊ณ ๊ธฐ์กด ๋๊ธฐ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ๋ฐ์ํฉ๋๋ค.
์ฃผ์ํด์ผ ํ ์ค์ ํ๋
ํจ์๋ฅผ ๋ํํ๋ ๊ฒ์ด ๋ค์๊ณผ ๊ฐ๋ค๊ณ ๊ฐ์ ํ์ง ๋ง์ญ์์ค. try/catch ๋ชจ๋ ์ค๋ฅ๋ฅผ ์ก์๋ผ ๊ฒ์
๋๋ค. ์์ด๋ฒ๋ฆฐ ๊ฒฝ์ฐ await ์ฝ์ ์์ try ๋ธ๋ก์ ๋ง๋ค๋ฉด ์ค๋ฅ๊ฐ ์ฒ๋ฆฌ๋์ง ์์ ์ ์์ต๋๋ค. ์ด๋ ๋ฏธ๋ฌํ์ง๋ง ์ํํ ๋ฌธ์ ๋ก, ๋ฆฌํฉํ ๋ง ์ค์ ์ข
์ข
๋ฐ์ํฉ๋๋ค.
์์ ์ ์ธ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ฉด ์ค๋ฅ๋ฅผ ์ผ๊ด๋๊ฒ ๋ผ์ฐํ
ํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. .catch() Promise ์ฒด์ธ ๋ฐ try/catch async/await ๋ธ๋ก์ ๊ฒฝ์ฐ Promise๋ฅผ ์ค๋ฅ ๊ฒฝ๋ก ์์ด ๋ฐฉ์นํ์ง ์๋๋ก ์ฃผ์ํ์ธ์.
์ฝ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ฒํ๊ธฐ: ์ค์ฉ์ ์ธ ์ฌ์ธต ๋ถ์
Promise๋ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌ์กฐ์ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋ถ์ฌํ๊ธฐ ์ํด JavaScript์ ๋์ ๋์์ต๋๋ค. ์ ๋๋ก ์ฌ์ฉํ๋ฉด ๋ณต์กํ๊ฒ ์ค์ฒฉ๋ ์ฝ๋ฐฑ์ ์ ๊ฑฐํ๊ณ , ๋น๋๊ธฐ ์์ ์ ๊ตฌ์ฑํ๋ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ๋จ์ํ Promise๋ก ์ ํํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๋ง์ ๊ฐ๋ฐ์๊ฐ ์์ ๋ ๋ชจ๋ฅด๊ฒ Promise์ ์ฝ๋ฐฑ ์คํ์ผ ํจํด์ ๋ค์ ๋์ ํ์ฌ Promise์ ์ด์ ์ ์ ํดํฉ๋๋ค. ์ด ์น์ ์์๋ Promise๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ ๋ก ๋ฌด์์ ์๋ฏธํ๋์ง ์ดํด๋ด ๋๋ค.
์ ์์ฑ๋ Promise ๊ธฐ๋ฐ ํจ์๋ ํ ๊ฐ์ง ์์
์ ์ํํด์ผ ํฉ๋๋ค. ๋น๋๊ธฐ ์์
์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํด๊ฒฐ๋๊ฑฐ๋ ๊ฑฐ๋ถ๋๋ Promise๋ฅผ ๋ฐํํ๋ ๊ฒ์
๋๋ค. ์ด ํจ์๋ ์ฝ๋ฐฑ์ ์ธ์๋ก ๋ฐ๋ ๋์ ํ์ค ํด๊ฒฐ ๋ฐฉ์์ ํตํด ์ฑ๊ณต ๋๋ ์คํจ๋ฅผ ์์ํด์ผ ํฉ๋๋ค. Promise๋ฅผ ์ง์ ๋ฐํํจ์ผ๋ก์จ ํธ์ถ ์ฝ๋๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ์์
์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. .then() .catch() ๋ด๋ถ ๋
ผ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์ ํ์ ์์ด์.
์ค์ฒฉ์ ํผํ์ธ์ .then() ์๋ก ๋ด๋ถ์ ์ผ๋ก ํธ์ถํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ Promise๋ฅผ ์ฝ๋ฐฑ์ฒ๋ผ ์ทจ๊ธํ์ฌ ์ฒด์ธ์ ํํํ๊ฒ ์ ์งํ๋ ๋์ ๊ฐ ๋ธ๋ก ๋ด์์ ์๋ก์ด Promise ์ฒด์ธ์ ๋ฐํํ ๋ ์ข
์ข
๋ฐ์ํฉ๋๋ค. ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด ๊ฐ๊ฐ .then() ๋ ๋ค๋ฅธ Promise๋ฅผ ๋ฐํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒด์ธ์ ํตํด ์ ๋ฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ์ฐจ์ ๋
ผ๋ฆฌ์ ๋งค์ฐ ์ ์ฌํ ๋ช
ํํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ์์
์ํ์ค๊ฐ โโ์์ฑ๋ฉ๋๋ค.
๋ ๋ค๋ฅธ ํผํด์ผ ํ ์ค์๋ ํ์ด๋ฐ์ ์ดํดํ์ง ์๊ณ ๋๊ธฐ ์ฝ๋์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ํผ์ฉํ๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, .then() ๊ด์ฐฎ์ง๋ง, ํด๊ฒฐ๋์ง ์์ Promise๋ฅผ ์ฒ๋ฆฌํ์ง ์๊ณ ๋ฐํํ๋ฉด ์์์น ๋ชปํ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก Promise ๋ด๋ถ์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. .then() ๋ธ๋ก์ ๊ฑฐ๋ถ๋ ์ฝ์์ผ๋ก ์๋ ๋ณํ๋๋ฉฐ, ์ด๋ฅผ ๋ค์ด์คํธ๋ฆผ์์ ํฌ์ฐฉํด์ผ ํฉ๋๋ค. ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด์ง๋ง ์ง์์ ์ธ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ฝ์์ด ํญ์ ๋ฐํ๋๋์ง ํ์ธํ์ธ์. ๋น์ฐํ ๊ฒ์ฒ๋ผ ๋ค๋ฆด ์ ์์ง๋ง return Promise๋ฅผ ๋ํํ๋ ํจ์ ๋ด๋ถ์ ๋ช
๋ น๋ฌธ์ ์ฒด์ธ์ ๋๊ณ ์กฐ์ฉํ ์ค๋ฅ๋ ์ ์๋์ง ์์ ๋์์ ๋ฐ์์ํต๋๋ค. Promise๋ ์ผ๊ด๋ ์ฒด์ธ์ ์ฌ์ฉํ๋ฉฐ, return ์ง์ ์ ํ๋ฆ์ ์์ ํ ๋ฐฉํดํฉ๋๋ค.
Promise๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑํ๋ฉด(์: ๊น๋ํ๊ฒ ๋ฐํํ๊ณ , ์ฌ๋ฐ๋ฅด๊ฒ ์ฒด์ด๋ํ๊ณ , ์ฝ๋ฐฑ ์ต๊ด์ ํผํ๋ ๊ฒ) ์ฝ๋๊ฐ ๋ ๋ช
ํํ๊ณ , ๋ ๊ฐ๋ ฅํด์ง๋ฉฐ, ๋๋ฒ๊น
์ด ํจ์ฌ ์ฌ์์ง๋๋ค. ์ด๋ฌํ ํจํด์ ๋ํ ๋ค์์ ์ฌ์ฉํ์ฌ ๋์ฑ ๊ฐ์ํ๋ ๋น๋๊ธฐ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ ๋ง๋ จํฉ๋๋ค. async/await์ด์ด์ ์ด์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ฐจ ๋ ผ๋ฆฌ์ ๋ํ ์ฝ์ ์ฒด์ด๋
Promise์ ํต์ฌ ์ฅ์ ์ค ํ๋๋ ๊น์ด ์ค์ฒฉ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ง ์๊ณ ๋ ์์ฐจ์ ์ธ ๋ก์ง์ ๋ชจ๋ธ๋งํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ ์ฐ์ฐ์ด ์ด์ ์ฐ์ฐ ์์ ์ค์ฒฉ๋๋ ์ฝ๋ฐฑ๊ณผ ๋ฌ๋ฆฌ, Promise๋ ๊ฐ๋ฐ์๊ฐ ์ผ๋ จ์ ๋น๋๊ธฐ ๋จ๊ณ๋ฅผ ๊น๋ํ๊ณ ์ ํ์ ์ธ ์ฒด์ธ์ผ๋ก ํํํ ์ ์๋๋ก ํฉ๋๋ค. ํ์ง๋ง ์ด ๊ธฐ๋ฅ์ ์ ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด Promise ์ฒด์ด๋์ ์ค์ ์๋ ๋ฐฉ์์ ์ดํดํด์ผ ํฉ๋๋ค.
ํ๋์ ๋น๋๊ธฐ ์์
์ด ์ด์ ์์
์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์ผ๋ฐ์ ์ธ ํ๋ฆ์ ์๊ฐํด ๋ณด์ธ์. ์ฝ๋ฐฑ ๊ธฐ๋ฐ ์ฝ๋์์๋ ์ค์ฒฉ ํจ์๊ฐ ์์ฑ๋ฉ๋๋ค. Promise๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ์์
์ Promise๋ฅผ ๋ฐํํ๊ณ , ์ด ๋ฐํ ๊ฐ์ ๋ค์ ์์
์ ์
๋ ฅ์ด ๋ฉ๋๋ค. .then() ์ฒด์ธ์์. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ๊ฐ ๊ณ์ธต์ ํตํด ์ํํ๊ฒ ํ๋ฅด๋ ํํํ๊ณ ๋
ผ๋ฆฌ์ ์ธ ๋จ๊ณ ์์๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ฌ์ฉ์ ํ๋กํ์ ๊ฐ์ ธ์ ์ฒ๋ฆฌํ ๋ค์, ์ฒ๋ฆฌ๋ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฌํ ๊ฐ ์์ ์ Promise๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
๊ฐ ๊ธฐ๋ฅ getUser, processUser์์ฐ ๋ฐ saveUser ์ด๊ฒ์ด ์ ๋๋ก ์๋ํ๋ ค๋ฉด Promise๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. ์ต์ข
.then() ์ด์ ๋จ๊ณ๊ฐ ๋ชจ๋ ์ฑ๊ณตํ ๋๋ง ์คํ๋ฉ๋๋ค. ์ฒด์ธ์ ์ด๋ค ํจ์์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ Promise๋ฅผ ๊ฑฐ๋ถํ๋ฉด .catch() ๋ธ๋ก์ด ์ฒ๋ฆฌํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฐ์ํจ์ ๋ช ํ์ฑ์ ์์ต๋๋ค. ๋ ผ๋ฆฌ ์ฒด์ธ์ ๊ฐ ๋จ๊ณ๋ ํน์ ์ญํ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ถ์ ํ๊ธฐ ์ฝ๊ณ , ๊ฒฉ๋ฆฌ๋ ์ํ์์ ํ ์คํธํ ์ ์์ต๋๋ค. ์ด๋ ํ๋ฆ ์ ์ด๊ฐ ์ฝ๋ฐฑ ์ธ์์ ์ฝ๋งค์ด๋ ๊ธฐ์กด ๋น๋๊ธฐ ์ฒด์ธ์ ๋นํด ํฌ๊ฒ ํฅ์๋ ๊ธฐ๋ฅ์ ๋๋ค.
์ฃผ์ํด์ผ ํ ์ ์ค ํ๋๋ ์๋์น ์์ ์ค์ฒฉ์
๋๋ค. ๋ค๋ฅธ ๊ฒ์ ๋ฃ๋ ๊ฒ์ ํํ ์ค์์
๋๋ค. .then() ๊ธฐ์กด ๋ธ๋ก ์์ ๋ธ๋ก์ ์ถ๊ฐํ๋ฉด ๋ฆฌํฉํ ๋ง ๋น์ ์๋ํ๋ ์ค์ฒฉ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํฉ๋๋ค. ํญ์ Promise๋ฅผ ๋ฐํํ๊ณ , ๊ผญ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋ด๋ถ ์ฒด์ธ์ ์ฌ์ฉํ์ง ๋ง์ธ์.
Promises๋ฅผ ์ ๋๋ก ์ฒด์ด๋ํ๋ฉด ์์ธก ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ๋ก์ง์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ด ๋ก์ง์ ๋๊ธฐ์ ์ฝ๋์ ๋งค์ฐ ์ ์ฌํ์ง๋ง ๋น์ฐจ๋จ ๋์์ ์๋ฒฝํ๊ฒ ์ง์ํฉ๋๋ค. ์ด๋ ๋ค์ ๋จ๊ณ๋ก์ ์ ํ์ ์ํ ํ ๋๋ฅผ ๋ง๋ จํฉ๋๋ค. async/await์ด๋ฅผ ํตํด ๊ฐ๋
์ฑ ์ธก๋ฉด์์ ์ด ํจํด์ด ํ์ธต ๋ ํฅ์๋ ๊ฒ์
๋๋ค.
๊ฐ ๋ฐํ ๋ฐ ์ฝ๋ฐฑ๊ณผ ์ ์ฌํ ์ฝ์ ๋จ์ฉ ๋ฐฉ์ง
Promise ๋ฆฌํฉํ ๋ง ๊ณผ์ ์์ ํํ ์ ์ง๋ฅด๋ ์ค์๋ ์ฝ๋ฐฑ ๊ธฐ๋ฐ ๊ฐ๋ฐ์์ฒ๋ผ ์๊ฐํ๋ ๊ฒ์
๋๋ค. ์ด๋ฌํ ์ฌ๊ณ ๋ฐฉ์์ด ๊ณ์๋๋ฉด ๊ฐ๋ฐ์๋ ์ข
์ข
.then() Promises์ ์๋๋ ํ๋ฆ์ ๋ฐฉํดํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ํฉ๋๋ค. ๊ฐ์ฅ ๋น๋ฒํ ๋ฌธ์ ์ค ํ๋๋ ๋ด๋ถ์์ ๊ฐ์ด๋ Promises๋ฅผ ๋ฐํํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฌ๋ ๊ฒ์
๋๋ค. .then() ํธ๋ค๋ฌ. ์ ์ ํ ๋ฐํ์ด ์์ผ๋ฉด ์ฒด์ธ์ด ๋์ด์ง๊ณ ๋ค์ด์คํธ๋ฆผ ๋ก์ง์ ์์๋ ์
๋ ฅ์ด๋ ์ ์ด ์ ํธ๋ฅผ ์์ ํ์ง ๋ชปํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ํจ์๊ฐ ๋น๋๊ธฐ ์์ ์ ์ํํ์ง๋ง ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง ์์ ๋ ๋ฐ์ํฉ๋๋ค. Promise ์ฒด์ธ์์ ๋ชจ๋ ๋จ๊ณ๋ ํด๊ฒฐ๋ ๊ฐ์ด๋ ๋ค๋ฅธ Promise๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ๊ฑด๋๋ฐ๋ฉด ๋ค์ ๋จ๊ณ๊ฐ ๋๋ฌด ์ผ์ฐ ์คํ๋๊ฑฐ๋ ์ค๋ฅ๊ฐ ์ง์ ๋ ์ค๋ฅ ์ฒ๋ฆฌ๊ธฐ์ ๋๋ฌํ์ง ๋ชปํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ๊ฐ์งํ๊ธฐ ์ด๋ ค์ด ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ณ ์์ธ์ ์ถ์ ํ๊ธฐ๊ฐ ๋์ฑ ์ด๋ ค์์ง๋๋ค.
๋ ๋ค๋ฅธ ์ค์๋ ์ค์ฒฉ์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. .then() ํธ๋ค๋ฌ๊ฐ ์๋ก ์์ ์์ต๋๋ค. ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ณด์ผ ์ ์์ง๋ง, ์ด ํจํด์ Promise๊ฐ ์ ๊ฑฐํ๋ ค๊ณ ํ๋ ๊ฒ๊ณผ ๋์ผํ ๊น์ ์ค์ฒฉ์ ์ฌํํฉ๋๋ค. ์์ฐจ์ ์ธ ๋จ๊ณ๋ฅผ ์ฐ๊ฒฐํ๋ ๋์ , ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ตฌ์กฐ๋ฅผ ๋ถ๊ดด์ํค๊ณ ํ๋ฆ์ ๋ฐ๋ฅด๊ณ ์ ์งํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํผํ๋ ค๋ฉด ๊ฐ๊ฐ์ ์ฒ๋ฆฌํ์ญ์์ค. .then() ๋ธ๋ก์ ์ ํ ๊ฒฝ๋ก์ ์ผ๋ถ๋ก ์ฌ์ฉํฉ๋๋ค. ๊ฐ ๋ธ๋ก์ ๋ช
ํํ ์
๋ ฅ์ ๋ฐ๊ณ ์ฒ๋ฆฌํ ํ ์ถ๋ ฅ์ ๋ฐํํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฒด์ธ์ด ์์๋์ง ์๊ณ ๊ฒฐ๊ณผ์ ์ค๋ฅ๊ฐ ํ ๋จ๊ณ์์ ๋ค์ ๋จ๊ณ๋ก ์ํํ๊ฒ ์ ๋ฌ๋ฉ๋๋ค. Promise๋ฅผ ์ฌ์ฉํ ๋ฆฌํฉํ ๋ง์ ๊ตฌ๋ฌธ ๋ณ๊ฒฝ๋ฟ๋ง ์๋๋ผ ํ๋ฆ๊ณผ ์ํ ๊ด๋ฆฌ ๋ฐฉ์์ ๋ณํ๋ ์๊ตฌํฉ๋๋ค.
๋ฐํ ์ผ๊ด์ฑ์ ์์น์ ์กด์คํ๊ณ ๋
ผ๋ฆฌ๋ฅผ ์ค์ฒฉํ๋ ค๋ ์ถฉ๋์ ์ ํญํจ์ผ๋ก์จ .then() ๋ธ๋ก์ ํตํด ๊ฐ๋ฐ์๋ ๊น๋ํ๊ณ ์์ธก ๊ฐ๋ฅํ๋ฉฐ ๋ณํ์๋ ๋ณต์๋ ฅ์ด ๋ฐ์ด๋ Promise ์ฒด์ธ์ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ๋ช
ํ์ฑ์ ๋์ฑ ๋ฐ์ ๋ ๋น๋๊ธฐ ํจํด์ ํตํฉํ๊ฑฐ๋ ํฅํ async/await๋ก ์ ํํ ๋ ํนํ ์ค์ํฉ๋๋ค.
๋ณ๋ ฌ ์คํ Promise.all Promise.allSettled
JavaScript์์ Promise์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๋๋ ๋น๋๊ธฐ ์์
์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. .then() ์ฒด์ธ์ ์์ฐจ ๋
ผ๋ฆฌ์ ์ด์์ ์ด์ง๋ง, ์ฌ๋ฌ ๋น๋๊ธฐ ์์
์ ๋
๋ฆฝ์ ์ผ๋ก ์คํํ ์ ์๋ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ด์ง ์์ต๋๋ค. Promise.all Promise.allSettled ํ์ ๋๊ตฌ๊ฐ ๋์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ฌ๋ฌ Promise๋ฅผ ๋์์ ์์ํ๊ณ ๋ชจ๋ Promise๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์์ด, ์ข
์๋์ง ์์ ์ํฌํ๋ก์์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ์ ์ฒด ์คํ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค.
Promise.all ์ปฌ๋ ์
์ ๋ชจ๋ Promise๊ฐ ์ฑ๊ณตํด์ผ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค. Promise ๋ฐฐ์ด์ ๋ฐ์์ ๋ชจ๋ Promise๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ํด๊ฒฐ๋๋ ์ Promise๋ฅผ ๋ฐํํฉ๋๋ค. Promise ์ค ํ๋๋ผ๋ ์คํจํ๋ฉด ์ ์ฒด ๋ฐฐ์น๊ฐ ๊ฑฐ๋ถ๋ฉ๋๋ค. ์ด ๋์์ ๊ณ์ ์งํํ๊ธฐ ์ ์ ๋ชจ๋ ์กด์ฌํด์ผ ํ๋ ์ฌ๋ฌ ์์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ํฉ์์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ด์ง๋ฅผ ๋ ๋๋งํ๊ธฐ ์ํด ์ฌ์ฉ์ ๋ฐ์ดํฐ, ์์คํ
๊ตฌ์ฑ ๋ฐ ํ์งํ ์ฝํ
์ธ ๊ฐ ํ์ํ ๊ฒฝ์ฐ, Promise.all ๋ชจ๋ ๊ฒ์ด ์ค๋น๋์์ ๋๋ง ์ ํ๋ฆฌ์ผ์ด์
์ด ์งํ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ์๊ฒฉํ ๋์์ ํ๋์ Promise๋ง ์คํจํ๋๋ผ๋ ๋ค๋ฅธ ๋ชจ๋ Promise๋ ๋ฌด์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์์์ ์์
์์๋ ํ์ฉ๋ ์ ์์ง๋ง, ๋ ๊ด๋ํ ์ํฌํ๋ก์์๋ ํญ์ ์ด์์ ์ธ ๊ฒ์ ์๋๋๋ค.
๋์กฐ์ ์ผ๋ก, Promise.allSettled ๋ ์ ์ฐํ ์ ๊ทผ ๋ฐฉ์์ ์ทจํฉ๋๋ค. ๋ชจ๋ Promise๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. Promise๊ฐ ํด๊ฒฐ๋์๋์ง ๊ฑฐ๋ถ๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์๋ฃ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๋ ๊ฐ Promise์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ค๋ช
ํ๋ ๊ฐ์ฒด ๋ฐฐ์ด์
๋๋ค. ์ด๋ ๋ถ๋ถ์ ์ธ ์ฑ๊ณต์ด ํ์ฉ๋๊ฑฐ๋ ์์๋๋ ์ผ๊ด ์์
์์ ํนํ ์ ์ฉํฉ๋๋ค. ์ฌ๋ฌ ์๋น์ค์ ์ํ๋ฅผ ํ์ธํ๊ฑฐ๋ ์ผ๋ จ์ ๋ถ์ ์ด๋ฒคํธ๋ฅผ ์ ์กํ๋ ์ํฉ์ ์๊ฐํด ๋ณด์ธ์. ํ๋๊ฐ ์คํจํ๋๋ผ๋ ๋๋จธ์ง๋ ๊ณ์ ์ฒ๋ฆฌํด์ผ ํ ์ ์์ต๋๋ค. Promise.allSettled ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ์์งํ๊ณ , ์ค๋ฅ๋ฅผ ์ํํ๊ฒ ์ฒ๋ฆฌํ๊ณ , ์คํ์ ์กฐ๊ธฐ์ ์ค๋จํ์ง ์๊ณ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ก ๊ณ์ ์์
ํ ์ ์์ต๋๋ค.
๊ฐ ๋ฐฉ๋ฒ์ ์ธ์ ์ฌ์ฉํด์ผ ํ๋์ง๋ ๊ตฌ์ฒด์ ์ธ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. Promise.all ํ ๋ถ๋ถ์ ์คํจ๊ฐ ๋๋จธ์ง ๋ถ๋ถ์ ๋ฌดํจํํ ๋ ์ฌ์ฉํฉ๋๋ค. Promise.allSettled ๊ฐ๋ณ ์ค๋ฅ๋ฅผ ๋ณต๊ตฌํ๋ฉด์๋ ์ฑ๊ณต์ ์ธ ๊ฒฐ๊ณผ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. ๋ ํจํด ๋ชจ๋ ์ฌ๋ฌ ์ํ๋ฅผ ์๋์ผ๋ก ์ถ์ ํ๋ ์ค์ฒฉ ์ฝ๋ฐฑ์ ํ์์ฑ์ ์์ ๊ณ , ๋ณ๋ ฌ ๋น๋๊ธฐ ์์
์ ๋ํ ๋์ฑ ์ ์ธ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ ๋ํ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ์ง์ํฉ๋๋ค. ์์ ์์ค ํจ์ ๋ด์์ ์ฌ์ฉํ๊ฑฐ๋ async ๊ฐ๋
์ฑ์ ์ํด ํจ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์บ์ฑ ๋ ์ด์ด, ์ฌ์๋ ๋ก์ง ๋๋ ๋ฐฐ์นญ ์ ํธ๋ฆฌํฐ์ ์ ๋ฌํ ์ ์์ต๋๋ค. ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํํ๊ฒ ์๋ํ์ฌ API, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
๋๋ ํ๋ฐํธ์๋ ๋ ๋ ํ์ดํ๋ผ์ธ์์ ๋์์ฑ ๋ก์ง์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋๊ท๋ชจ ์์คํ ์์ ๋ณ๋ ฌ Promise ์คํ์ ๋์ ํ๋ฉด ์ฑ๋ฅ์ด ํฅ์๋๊ณ ๋ณ๋ชฉ ํ์์ด ์ค์ด๋ค๋ฉฐ ๋น๋๊ธฐ ํ๋ฆ ๋ชจ๋ํฐ๋ง์ด ๋์ฑ ์ฌ์์ง๋๋ค. ์ ๊ตฌ์ฑ๋ ๋ฆฌํฉํ ๋ง ๋ฐฉ์๊ณผ ํตํฉํ๋ฉด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฝ๋ฐฑ ๊ธฐ๋ฐ ๋ชจ๋ธ์์ ๋ฒ์ด๋ ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋น๋๊ธฐ ์ํคํ ์ฒ์ ๋์ฑ ๊ฐ๊น๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
Async/Await: ๋ ๊น๋ํ ๊ตฌ๋ฌธ, ๋ ์ค๋งํธํ ํ๋ฆ
์ต์ JavaScript ๋์
async await Promises ์ฒ๋ฆฌ๋ฅผ ๊ฐ์ํํ๊ธฐ ์ํด. Promises๋ ์ด๋ฏธ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌ์กฐ๋ฅผ ๋์
ํ์ง๋ง, ํนํ ๋ณต์กํ ํ๋ฆ์ ์ฒ๋ฆฌํ ๋ ์ฒด์ด๋ ๊ตฌ๋ฌธ์ด ์ฌ์ ํ ์ฅํฉํด์ง ์ ์์ต๋๋ค. async/await ๋ชจ๋ธ์ Promises๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ง์ ๊ตฌ์ถ๋๋ฏ๋ก ๊ฐ๋ฐ์๋ ๋น์ฐจ๋จ ์คํ์ ํฌ์ํ์ง ์๊ณ ๋ ๋๊ธฐ ๋
ผ๋ฆฌ์ฒ๋ผ ์ฝํ๋ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋น๋๊ธฐ ํจ์์ ์๋ ๋ฐฉ์
An async ํจ์๋ ๋ด๋ถ์์ ๋ฌด์์ ๋ฐํํ๋ ํญ์ Promise๋ฅผ ๋ฐํํฉ๋๋ค. ๋ณธ๋ฌธ ๋ด์์ await ํค์๋๋ ๋๊ธฐ ์ค์ธ Promise๊ฐ ํด๊ฒฐ๋๊ฑฐ๋ ๊ฑฐ๋ถ๋ ๋๊น์ง ์คํ์ ์ผ์ ์ค์งํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ค์์ ์ฌ์ฉํ์ง ์๊ณ ๋ ์์์ ์ข
์์ฑ์ ํํํ ์ ์์ต๋๋ค. .then() ์ฒด์ธ. ์ค์ํ ๊ฒ์ ๋ค์์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. await ๋ด์์๋ง ์ ํจํฉ๋๋ค async ์ด๋ ํ๋ฆ ์ ์ด ์คํ์ผ์ ์๋์ ์ด๊ณ ๋ช
์์ ์ผ๋ก ๋ฐ๊พธ๋ ๊ธฐ๋ฅ์
๋๋ค.
์ด๋ฌํ ์ผ์ ์ค์ง ๋ฐ ์ฌ๊ฐ ๋์์ ๋น๋๊ธฐ ๋ก์ง์ ๋ํ ์ถ๋ก ์ ๊ฐ์ํํฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ ์ ์ด ํ๋ฆ์ ๋ถ์ฐํ๋ ๋์ .then() ๋ธ๋ก, ๋ชจ๋ ๊ฒ์ด ํํฅ์ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ ๋จ๊ณ๋ ์์ฐ์ค๋ฝ๊ฒ ์ด์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๋ฏ๋ก ์ฝ๋ ๊ฐ๋
์ฑ์ด ํฅ์๋๊ณ ์ธ์ง ๋ถํ๊ฐ โโ์ค์ด๋ญ๋๋ค.
ํฅ์๋ ๊ฐ๋ ์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ
๋น๋๊ธฐ/๋๊ธฐ(async/await)๋ ์์ ํ๋ฆ์ด ํน์ ์์๋๋ก ์ํ๋์ด์ผ ํ ๋ ๋น์ ๋ฐํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ์๋ต์ ๋ณด๋ด๋ ๊ณผ์ ์ด ๋ช ํํ ๋ช ๋ น ์ํ์ค๊ฐ โโ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋ ์ด์ ๋ก์ง์ ์ถ์ ํ๊ธฐ ์ํด ์ฒด์ธ ๋ธ๋ก์ ๋๋๋ค ํ์๊ฐ ์์ต๋๋ค. ์ด๋ ํนํ ์ฌ๋ฌ ๋ถ๊ธฐ, ์กฐ๊ฑด๋ถ ๋น๋๊ธฐ ์ฐ์ฐ ๋๋ ์ค์ฒฉ๋ try/catch ๋ก์ง์ ์ฌ์ฉํ๋ ํจ์์์ ์ ์ฉํฉ๋๋ค. ์ฝ๋๋ ๋๊ธฐ์์ผ๋ก ๋ณด์ด์ง๋ง, ๋ด๋ถ์ ์ผ๋ก๋ ๋น์ฐจ๋จ ๋ฐฉ์์ผ๋ก ์คํ๋ฉ๋๋ค.
๊ตฌ์กฐ๋ฅผ ๋์ด, async/await ๋ณด์ผ๋ฌํ๋ ์ดํธ๋ฅผ ์ค์ด๊ณ ์ผ๊ด์ฑ์ ํฅ์์ํต๋๋ค. ์๋ฅผ ๋ค์ด ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๋จ์ผ try/catch ๋ถ์ฐ๋ณด๋ค๋ ์ฐจ๋จ .catch() Promise ์ฒด์ธ ์ ์ฒด์ ๊ฑธ์ณ ํธ๋ค๋ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์ฑ, ํ
์คํธ ๋ฐ ๋๋ฒ๊น
์ด ๋ ์ฌ์ด ๋ ์๊ณ ์ง์ค์ ์ธ ํจ์๊ฐ ์์ฑ๋ฉ๋๋ค.
์ค๋ฅ๋ฅผ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ
์ async/await๋น๋๊ธฐ ์ฝ๋์ ์์ธ๋ ๋์ผํ ๊ฒ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. try/catch ๊ฐ๋ฐ์๋ค์ด ๋๊ธฐ์ JavaScript์์ ์ด๋ฏธ ์ต์ํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ด๋ณด ๊ฐ๋ฐ์์ ํ์ต ๊ณก์ ์ด ํฌ๊ฒ ๋จ์ถ๋๊ณ ๋๊ธฐ ๋ฐ ๋น๋๊ธฐ ๋ก์ง ์ ๋ฐ์ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ํ์คํ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ๊ฐ๋ฐ์๋ ๋ค์ ์ฌํญ์ ์ฃผ์ํด์ผ ํฉ๋๋ค. await ํ์ํ ๋ชจ๋ ์ฝ์์ ์์ด๋ฒ๋ฆฌ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. try/catch ๋ธ๋ก์ผ๋ก ์ธํด ํฌ์ฐฉ๋์ง ์์ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ณ๋ ฌ ์์
์๋ ์ฌ์ ํ Promise.all ๋๋ ์ ์ฌํ ํจํด์ด๋ฏ๋ก await ์คํ์ ์ผ์ ์ค์งํฉ๋๋ค. ์ฌ๊ธฐ์ ์๋ชป ์ฌ์ฉํ๋ฉด ์์
์ด ๋์์ ์คํ๋ ์ ์์ ๋ ์์๋ณด๋ค ์ฑ๋ฅ์ด ๋๋ ค์ง ์ ์์ต๋๋ค.
Async/Await๊ฐ ์ง์ ์ผ๋ก ํ์ํ ๊ณณ
Async/await๋ ๋น์ฆ๋์ค ๋ก์ง์ ์กฐ์จํ๊ณ , API๋ฅผ ์กฐ์ ํ๊ณ , ์คํ ๋ฆฌ์ง์ ์ฝ๊ณ ์ฐ๊ฑฐ๋, ์๊ฒฉ ๋ฆฌ์์ค์ ์์กดํ๋ UI ์ ๋ฐ์ดํธ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ด์์ ์ ๋๋ค. ๋ฐฑ์๋ ์ปจํธ๋กค๋ฌ, ๊ฒฝ๋ก ํธ๋ค๋ฌ, ์๋น์ค ๊ณ์ธต, ๊ทธ๋ฆฌ๊ณ ํผ ์ ์ถ์ด๋ ๋์ ๋ ๋๋ง๊ณผ ๊ฐ์ ํ๋ฐํธ์๋ ์์ ์ ๋ช ํ์ฑ์ ๋์ฌ์ค๋๋ค. Async/await์ ์ง์ ํ ํ์ ์ฝ๋ฐฑ์ด๋ ์ค์ฒฉ๋ Promise์ ์๊ฐ์ , ๋ ผ๋ฆฌ์ ๋ณต์ก์ฑ ์์ด ๋๊ธฐ ์ฝ๋์ ํ๋ฆ๊ณผ ๋น๋๊ธฐ ์คํ์ ์ฑ๋ฅ์ ๊ฒฐํฉํ๋ ๋ฐ ์์ต๋๋ค.
์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด, async/await ๋ฒ๊ทธ๋ฅผ ์ค์ด๊ณ , ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฅ์์ํค๋ฉฐ, ๋์ฑ ๊น๋ํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ์์คํ
์ ๊ตฌ์ถํฉ๋๋ค. ๋ชจ๋์ ์ค๊ณ๋ฅผ ์ฅ๋ คํ๊ณ ๊ธฐ์กด Promise ๊ธฐ๋ฐ API์ ์์ฐ์ค๋ฝ๊ฒ ํธํ๋ฉ๋๋ค. ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์ ์ด ๊ธฐ๋ฅ์ ๋์
ํ๋ฉด ํ ํ์
, ์จ๋ณด๋ฉ ๋ฐ ์ฅ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ์ํ๋ฉ๋๋ค.
์ฝ์์์ ๋น๋๊ธฐ/๋๊ธฐ๊น์ง: ๋ฆฌํฉํ ๋ง ํจํด ์ค๋ช
Promise์์ async/await๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ๋น๋๊ธฐ JavaScript๋ฅผ ํ๋ํํ๋ ๋ฐ ์์ด ๋ ผ๋ฆฌ์ ์ธ ๋ค์ ๋จ๊ณ์ ๋๋ค. Promise๋ ์ฝ๋ฐฑ์ ๋นํด ๊ตฌ์กฐ์ ์ผ๋ก ๊ฐ์ ๋์์ง๋ง, ๋ณต์กํ ์ฒด์ธ์์๋ ์ฌ์ ํ ์ฅํฉํ๊ฑฐ๋ ๋ณต์กํด์ง ์ ์์ต๋๋ค. Async/await๋ ๋๊ธฐ ์ฝ๋์ ์ ์ฌํ ๋์ฑ ๊น๋ํ ๊ตฌ๋ฌธ์ ์ ๊ณตํ์ฌ ์ ์ด ํ๋ฆ์ ๋ฐ๋ฅด๊ณ , ์ค๋ฅ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ์งํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค. ์ด ์น์ ์์๋ Promise ๊ธฐ๋ฐ ๋ก์ง์ async/await ํจ์๋ก ํจ๊ณผ์ ์ด๊ณ ์์ ํ๊ฒ ๋ฆฌํฉํ ๋งํ๋ ์ฃผ์ ํจํด์ ์ค๋ช ํฉ๋๋ค.
์์ฐจ์ ์ฒด์ธ์ ์ํฅ์ ๋ ผ๋ฆฌ๋ก ๋ฆฌํฉํ ๋ง
Promise ๊ธฐ๋ฐ ์ฝ๋์ ์ผ๋ฐ์ ์ธ ํจํด์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์
๋๋ค. .then() ์์ฐจ์ ์์
์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํธ์ถ์
๋๋ค. async/await๋ก ๋ณํํ ๋ ์ด๋ฌํ ํธ์ถ์ ์ผ๋ จ์ ํธ์ถ๋ก ๋ค์ ์์ฑ๋ ์ ์์ต๋๋ค. await ๋ด์ ์ง์ async ํจ์์
๋๋ค. ๊ฐ ๋จ๊ณ๋ ๋ช
ํํ๊ฒ ํ์๋์ง๋ง ๋ค์ฌ์ฐ๊ธฐ๋ ๋ณ๋์ ์ฒ๋ฆฌ๊ธฐ ๋ธ๋ก์ ์์ต๋๋ค. ํ๋ฆ์ ๊ธฐ์กด ์ ์ฐจ์ ํจ์์ฒ๋ผ ํํฅ์์ผ๋ก ์งํ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ์ฑ๊ณต์ ํต์ฌ์ ๊ฐ Promise ๋ฐํ ํจ์์ ๋์์ด ๊ทธ๋๋ก ์ ์ง๋๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ ์ผํ ๋ณํ๋ ๊ฒฐ๊ณผ๊ฐ์ด ์ฌ์ฉ๋๋ ๋ฐฉ์๋ฟ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฆฌํฉํ ๋ง์ ์ํ์ด ๋ฎ์์ง๊ณ ํ ์คํธ ์ค์ ์ฝ๊ฒ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
๊ต์ฒด .catch() Try/Catch ๋ธ๋ก์ ์ฌ์ฉํ์ฌ
async/await๋ฅผ ๋์
ํ ๋ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ์ฃผ์ ๊ฐ์ ์์ญ์
๋๋ค. .catch() ์ฒด์ธ์ ๋์์ ๊ฐ๋ฐ์๋ ๋๊ธฐ ๋จ๊ณ๋ฅผ ๋ํํฉ๋๋ค. try/catch ๋ธ๋ก. ์ด ๋ธ๋ก์ ์ํ์ค์ ๋ชจ๋ ๋จ๊ณ์์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ณ ์ค์ ์ง์ค์ ์์ธ ๋ก์ง์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ํนํ ๋ถ์ฐ๋ ๋ฐฉ์๊ณผ ๋น๊ตํ ๋ ๊ฐ๋
์ฑ๊ณผ ์ผ๊ด์ฑ์ด ๋ ๋ฐ์ด๋ฉ๋๋ค. .catch() ์ฌ๋ฌ ๊ฐ์ ํธ๋ค๋ฌ ๋๋ ๋ด์ฅ๋ ์ค๋ฅ ๋
ผ๋ฆฌ .then() ๋ธ๋ก.
๊ฐ๋ฐ์๋ ๋ํ ๋์ผํ ๋
ผ๋ฆฌ ํ๋ฆ์ ์ํ๋ ๋๊ธฐ ๋จ๊ณ๋ง ํฌํจํ๋ ๊ฒ์ ์ฃผ์ํด์ผ ํฉ๋๋ค. try ๋ธ๋ก. ๊ด๋ จ ์๋ ์์
์ ๋์ผํ ์ค๋ฅ ์ฒ๋ฆฌ๊ธฐ ์๋์ ๋ฐฐ์นํ๋ฉด ๊ด๋ จ ์๋ ์ค๋ฅ๊ฐ ๊ฐ๋ ค์ง ์ ์์ต๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ๋ณ๋ ฌ์ฑ ์ ์ง
async/await๋ฅผ ๋์ ํ ๋ ๋ฐ์ํ๋ ์ํ ์ค ํ๋๋ ์๋ ๋ณ๋ ฌ ์คํ์ด ์๋๋ ๋์์์ ์๋์น ์๊ฒ ์์ฐจ์ ์ธ ๋์์ด ๋ฐ์ํ๋ ๊ฒ์ ๋๋ค. Promise ์ฒด์ธ์์๋ ์ฌ๋ฌ ์์ ์ ๋์์ ์์ํ๊ธฐ ์ฝ์ต๋๋ค. async/await๋ก ์ ํํ ๋ ๊ฐ ์์ ์ ์ฐจ๋ก๋ก ๊ธฐ๋ค๋ฆฌ๋ฉด ๋ถํ์ํ ์ง์ฐ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ฑ๋ฅ์ ์ ์งํ๋ ค๋ฉด async/await๋ฅผ ๋ค์๊ณผ ๊ฒฐํฉํด์ผ ํฉ๋๋ค. Promise.all ์์
์ด ๋ณ๋ ฌ๋ก ์คํ๋ ์ ์๋ ๊ฒฝ์ฐ์
๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ๋ฌ ๋ฐ์ดํฐ ์์ค๋ฅผ ํ ๋ฒ์ ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ, ๊ฒฐํฉ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ ์ ๋ชจ๋ Promise๋ฅผ ์ด๊ธฐํํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ตฌ๋ฌธ์ ๊น๋ํ๊ฒ ์ ์งํ๋ฉด์ ๋์์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
์ ํธ๋ฆฌํฐ ํจ์๋ฅผ ์ ์ง์ ์ผ๋ก ๋ฆฌํฉํ ๋งํฉ๋๋ค
๋ชจ๋ ํจ์๋ฅผ ํ ๋ฒ์ ๋ณํํ ํ์๋ ์์ต๋๋ค. ๊ฐ๋จํ ๋น๋๊ธฐ ์์
์ ๋ํํ๋ ๋ฆฌํ ์์ค ์ ํธ๋ฆฌํฐ ํจ์๋ถํฐ ์์ํ์ธ์. ์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณํํ์ธ์. async ๋๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ํจ์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ํจ์๊ฐ ์ค๋น๋๋ฉด ํธ์ถ ์คํ์ ๋ฐ๋ผ ์์ชฝ์ผ๋ก ์์
ํ ์ ์์ผ๋ฉฐ, async/await๋ฅผ ๋์
ํ์ฌ ๊ฐ ๊ณ์ธต์ ๋ก์ง์ ๋จ์ํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ ์ง์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฝ๋ ๊ฒํ ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ณ ํ๊ท ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ค์ฌ์ค๋๋ค. ๊ฐ ๋ฆฌํฉํ ๋ง์ ๋ถ๋ฆฌ๋์ด ์๊ณ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ค๋จํ๊ฑฐ๋ ๋๋์ ์ธ ์ฌ์์ฑ์ ์๊ตฌํ์ง ์๊ณ ์ ์ง์ ์ผ๋ก ๋ฆฌํฉํ ๋งํ ์ ์์ต๋๋ค.
์ํฐํจํด์ ์ดํดํ๊ณ ํผํ์ธ์
์ด ์ ํ ์ค์ ํํ ์ ์ง๋ฅด๋ ์ค์์๋ ์ฌ์ฉ์ ์๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค. await, ์ด๋ Promises๊ฐ ์ฒ๋ฆฌ๋์ง ์๊ฑฐ๋ ์ฌ์ฉ๋์ง ์๊ณ ์คํ๋๋๋ก ํฉ๋๋ค. await ์์ ํ๊ฒ ๋ณ๋ ฌ๋ก ์คํํ ์ ์๋ ์์
์ ๋ํด์. ๊ฐ๋ฐ์๋ ๋ํ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. async ๋น๋๊ธฐ ์์
์ ์ํํ์ง ์๋ ํจ์์ ๋ํด, ์ค์ ๋ก ๋ฌด์์ด ๋น๋๊ธฐ์ธ์ง์ ๋ํ ํผ๋์ ์ผ๊ธฐํฉ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ์๋ง ํจ์๋ฅผ ๋น๋๊ธฐ๋ก ํ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ช ํํ ๊ท์น์ ์ ํ๋ฉด ์ฝ๋๋ฒ ์ด์ค์ ์์ธก ๊ฐ๋ฅ์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ฒ ์ ํ ํ ์คํธ์ ์ผ๊ด๋ ๊ตฌ์กฐ๊ฐ ๊ฒฐํฉ๋๋ฉด async/await๋ ํ๋์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ๋น๋๊ธฐ ์ฝ๋์ ๊ธฐ๋ฐ์ด ๋ ์ ์์ต๋๋ค.
๋๊ธฐ ์ฝ๋์ฒ๋ผ ๋๊ปด์ง๋ ์ฝ๊ธฐ ์ฌ์ด ๋น๋๊ธฐ ๋ ผ๋ฆฌ ์์ฑ
์ต์ JavaScript์ async/await ๋ชจ๋ธ์ ํต์ฌ ์ฅ์ ์ค ํ๋๋ ๋๊ธฐ ๋ก์ง์ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ๊ฐ๋ฐ์๋ ๋ณต์กํ ๋น๋๊ธฐ ํ๋ฆ์ ์ฝ๊ธฐ ์ฝ๊ณ , ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฌ์ฐ๋ฉฐ, ์ฝ๋ฐฑ์ด๋ ์ฒด์ธ Promise์์ ํํ ๋ณผ ์ ์๋ ์๊ฐ์ ์ธ ๋ณต์กํจ ์์ด ํํํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ง์ ์ผ๋ก ์ฝ๊ธฐ ์ฌ์ด ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ฉด ๋จ์ํ ๊ธฐ์กด ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋์ฒดํ๋ ๊ฒ ์ด์์ ๋
ธ๋ ฅ์ด ํ์ํฉ๋๋ค. .then() ๊ณผ await์๋์ ์ธ ๊ตฌ์กฐ, ๋ช
๋ช
, ํ๋ฆ ์ ์ด๊ฐ ํ์ํฉ๋๋ค.
๋ช ํ์ฑ์ ์ด๋ฆ ์ง์ ์์ ์์๋ฉ๋๋ค. ๋น๋๊ธฐ ํจ์๋ ๋ชฉ์ ๊ณผ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ช ํํ๊ฒ ์ค๋ช ํด์ผ ํฉ๋๋ค. ์ถ์์ ์ด๊ฑฐ๋ ์ผ๋ฐ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๋์ , ๊ฐ ํจ์๋ ๋์ฌ๋ ๋์์ ํํํ๊ณ , ์ ์ ํ ๊ฒฝ์ฐ ๋น๋๊ธฐ ํน์ฑ์ ๋ค์ ๋ถ์ฌ์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํจ์ ๋ด๋ถ๋ฅผ ์์ธํ ์ดํด๋ณผ ํ์ ์์ด ํจ์์ ๊ธฐ๋ฅ์ ๋ช ํํ๊ฒ ์ ๋ฌํ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์ค์ํ ์์๋ ์ค์ฒฉ๋ ๋ก์ง์ ์ต์ํํ๋ ๊ฒ์ ๋๋ค. ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋น๋๊ธฐ ํจ์ ๋ด์ ์กฐ๊ฑด ๋ถ๊ธฐ๋ ์ค์ฒฉ๋ try/catch ๋ธ๋ก์ ๊น์ด ๋ฐฐ์นํ์ง ๋ง์ธ์. ๋์ ๋ณต์กํ ํ๋ฆ์ ๋ ์๊ณ ๋ชฉ์ ์งํฅ์ ์ธ ๋น๋๊ธฐ ํจ์๋ก ๋๋์ธ์. ๊ฐ ํจ์๋ ํ๋์ fetch, ํ๋์ ๋ณํ, ํ๋์ ๋ถ์์ฉ์ ๋ํด ๋จ์ผ ์ฑ ์์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์์ ๋ถ๋ถ๋ค์ ๊ตฌ์ฑํ๋ฉด ์ ์ฒด ๋ก์ง์ ๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ํ ์คํธํ๊ธฐ๋ ๋ ์ฌ์์ง๋๋ค.
์ ์ด ํ๋ฆ ๋ํ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋๊ธฐ ์ฝ๋์์ ์ฌ์ฉ์๋ ๊ฐ ๋ฌธ์ฅ์ด ์ด์ ๋ฌธ์ฅ์์ ์์ฐ์ค๋ฝ๊ฒ ์ด์ด์ง๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๋น๋๊ธฐ ๋ก์ง๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๊ด๋ จ ์๋ ์์ ์ ๋ผ์ ๋ฃ๊ฑฐ๋ ์ ์์ค ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ์ค๊ฐ์ ์ฝ์ ํ๋ ค๋ ์ ํน์ ๋ฟ๋ฆฌ์น์ธ์. ํ๋ฆ์ ์ ํ์ ์ผ๋ก ์ ์งํ๊ณ ๊ฐ ์ค์ด ์ด์ ์ค์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ด์ด์ง๋๋ก ํ์ธ์. ์์ ์ด ์ฃผ๋ณ ๋จ๊ณ์ ๊ด๋ จ์ด ์๋ค๋ฉด ๋ณ๋์ ํจ์๋ก ์ฎ๊ธฐ๊ณ ์ด๋ฆ์ ๋ช ํํ๊ฒ ์ง์ ํ์ธ์.
์ค๋ฅ ์ฒ๋ฆฌ์ ์ผ๊ด์ฑ์ ๊ฐ๋
์ฑ์ ํ์ธต ๋์ฌ์ค๋๋ค. try/catch ์ผ๊ด์ฑ์ ์ ์งํ๊ณ catch ๋ธ๋ก์ ๊น๋ํ๊ณ ์ง์ค์ ์ผ๋ก ์ ์งํ๋ฉด ๋น๋๊ธฐ ํจ์๊ฐ ์กฐ๊ฑด๋ฌธ๊ณผ ๊ฒฝ๊ณ ์กฐ๊ฑด ๋ก์ง์ผ๋ก ๋ณต์กํด์ง๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๋ก์ง์ ์ด๋ฌํ ๋ถ๋ฆฌ๊ฐ ๋ถ๋ช
ํ ๋์์ด ๋์ง ์๋ ํ, ์ฌ์ฉ์ ์ง์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ผ๋ฐ์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ์ ํผ์ฉํ์ง ๋ง์ธ์.
๋ง์ง๋ง์ผ๋ก, ๋น๋๊ธฐ ํจ์๋ฅผ ์๋ฆฌ ๋ด์ด ์ฝ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ค๋ช ํ์ฌ ๊ฐ๋ ์ฑ์ ํ ์คํธํ์ธ์. ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ํด ์ถ๊ฐ ์ค๋ช ์ด๋ ์ฌ๋ฌ ํ์ผ์ ๋๋๋ค ํ์ ์์ด ๋จ๊ณ๊ฐ ์ดํด๋๋ค๋ฉด ์ฝ๋๋ ์ ๋๋ก ์๋ํ๊ณ ์๋ ๊ฒ์ ๋๋ค. ์ ์์ฑ๋ ๋น๋๊ธฐ ๋ก์ง์ ์๋ฆฌํ๊ฑฐ๋ ๋ํดํ๊ฒ ๋๊ปด์ ธ์๋ ์ ๋ฉ๋๋ค. ์ฒ์๋ถํฐ ๋๊น์ง ๋ช ํํ๊ฒ ์ ๊ฐ๋๋, ์ ๊ตฌ์ฑ๋ ์ด์ผ๊ธฐ์ฒ๋ผ ๋๊ปด์ ธ์ผ ํฉ๋๋ค.
๋น๋๊ธฐ ํจ์๋ฅผ ๋๊ธฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ ์์ฑํ๋ฉด ์ฑ๋ฅ๊ณผ ํ ์ดํด๋๋ฅผ ๋ชจ๋ ๋์ผ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฌ๊ณ ๋ฐฉ์์ ๋น๋๊ธฐ ์คํ์ ๊ฐ๋ ฅํจ๊ณผ ์ฝ๋์ ๋ช ํ์ฑ์ ๋ํ ์ธ๊ฐ์ ์๊ตฌ ์ฌ์ด์ ๊ฐ๊ทน์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋น๋๊ธฐ/๋๊ธฐ ๋ธ๋ก์์ ์์ฐจ ์คํ๊ณผ ๋ณ๋ ฌ ์คํ ๊ด๋ฆฌ
DaVinci์๋ async/await ๋น๋๊ธฐ ์ฝ๋์ ์์ฑ ๋ฐ ์ฝ๊ธฐ ๋ฐฉ์์ ๊ฐ์ํํ์ง๋ง, ์คํ ํ์ด๋ฐ๊ณผ ๊ด๋ จํ์ฌ ๋ฏธ๋ฌํ ๋ฌธ์ ์ ์ ์ผ๊ธฐํฉ๋๋ค. ์ด ๋ชจ๋ธ์ ์ฌ์ฉํ ๋ ๊ฐ๋ฐ์๊ฐ ์ดํดํด์ผ ํ ๊ฐ์ฅ ์ค์ํ ์ฐจ์ด์ ์ค ํ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์๋ฌ์ ์ผ์ด๋๋ ๋ณ๋ ฌ ์คํ. ๊ฐ ํจํด์ ์ธ์ ์ ์ฉํด์ผ ํ๋์ง ์๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ, ํ์ฅ์ฑ ๋ฐ ์๋ต์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
In async/await, ์ฌ๋ฌ ๊ฐ ๋ฐฐ์น await ์์ฐจ์ ์ธ ๋ช
๋ น๋ฌธ์ ๊ฐ ์์
์ด ์ด์ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํ ํ์ ์์๋ฉ๋๋ค. ์ด๋ ๊ธฐ์กด์ ์ ์ฐจ์ ์ฝ๋๋ฅผ ๋ฐ์ํ๋ฉฐ, ํ ๋จ๊ณ๊ฐ ์ด์ ๋จ๊ณ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ๋ ์ด์์ ์
๋๋ค. ์๋ฅผ ๋ค์ด, ์
๋ ฅ ๊ฒ์ฆ, ์ฌ์ฉ์ ๊ฐ์ ธ์ค๊ธฐ, ๊ทธ๋ฆฌ๊ณ ํ๋กํ ๋ณ๊ฒฝ ์ฌํญ ์ ์ฅ์ ๋ฐ๋์ ์ด ํน์ ์์๋๋ก ์งํ๋์ด์ผ ํฉ๋๋ค. ์์ฐจ์ ๋ชจ๋ธ์ ๋
ผ๋ฆฌ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ํน์ ์ง์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ๋๋ฒ๊น
์ ๋ ์ฝ๊ฒ ํด์ค๋๋ค.
ํ์ง๋ง ์ด ํจํด์ ํ์์ฑ์ด ์๋ ์ต๊ด์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฌ๋ฌ ๋น๋๊ธฐ ์์
์ด ์๋ก ๋
๋ฆฝ์ ์ธ ๊ฒฝ์ฐ, ์์ฐจ์ ์ผ๋ก ์คํํ๋ฉด ์ธ์์ ์ธ ์ง์ฐ์ด ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ธ ๊ฐ์ ์๋ก ๋ค๋ฅธ ์๋ํฌ์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ก๊ทธ, ๋ฉํธ๋ฆญ, ๊ฐ์ฌ ์ถ์ ์ ๋์์ ์์ฑํ๋ ์์
์ ์์ฐจ์ ์ผ๋ก ์ํํด์๋ ์ ๋ฉ๋๋ค. ๋ถํ์ํ ๊ฐ ์์
์ await ํนํ ํธ๋ํฝ์ด ๋ง์ ํ๊ฒฝ์ด๋ ์ฑ๋ฅ์ด ์ค์ํ ์ํฌํ๋ก์์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ง์ฐ ์๊ฐ์ด ๋ ์ฌํด์ง๋๋ค.
์์
์ ๋ณ๋ ฌ๋ก ์คํํ๋ ค๋ฉด ๊ฐ๋ฐ์๋ Promise๋ฅผ ์ฆ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ด๊ธฐํํด์ผ ํฉ๋๋ค. ์ด๋ฌํ Promise๋ ๋ณ์์ ์ ์ฅํ ํ ๋ค์์ ์ฌ์ฉํ์ฌ ํจ๊ป ํด๊ฒฐํ ์ ์์ต๋๋ค. Promise.all or Promise.allSettled, ์์ ํ ์ฑ๊ณต์ด ํ์ฉ๋๋์ง ๋ถ๋ถ์ ์ธ ์คํจ๊ฐ ํ์ฉ๋๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ๊ทธ๋ฃนํ๋๋ฉด ๋จ์ผ await call์ async/await์ ์ด์ ์ ์ ์งํ๋ฉด์ ๋์์ฑ์ ๊ทน๋ํํ์ฌ ์ง๋จ์ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์์ฐจ ์คํ๊ณผ ๋ณ๋ ฌ ์คํ ์ค ์ด๋ค ๊ฒ์ ์ ํํ๋์ง๋ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐฉ์์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์์ฐจ ํ๋ฆ์์๋ ๋จ์ผ try/catch ์ ์ฒด ์ํ์ค๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ณ๋ ฌ ํ๋ฆ์์๋ ๋ชจ๋ ์ค๋ฅ๋ฅผ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ ์ง, ์๋๋ฉด ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฐ ์์
์ ์ค์๋์ ์ค๋ฅ๋ฅผ ๊ธฐ๋กํ๊ฑฐ๋ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
์ด๋ฌํ ์ฐจ์ด์ ์ ์ดํดํ๋ฉด ๊ฐ๋ฐ์๋ ๋ช ํ์ฑ๊ณผ ์ฑ๋ฅ์ ๊ท ํ์ ๋ง์ถ ์ ์์ต๋๋ค. ๋จ๊ณ๊ฐ ์๋ก ์์กดํ๊ณ ์ฝ๋์ ์ ํ ์ถ๋ก ์ ์ด์ ์ด ์๋ ๊ฒฝ์ฐ ์์ฐจ ๋ ผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์. ์์ ์ด ๋ ๋ฆฝ์ ์ด๊ณ ์๋๊ฐ ์ค์ํ ๊ฒฝ์ฐ ๋ณ๋ ฌ ๋ ผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์. Async/await๋ ๋ ๊ฐ์ง ๋ชจ๋๋ฅผ ์ํํ ์ ์๋ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ์ค์ํ ๊ฒ์ ์ด๋ค ๋๊ตฌ๊ฐ ์ํฉ์ ๋ง๋์ง ์๋ ๊ฒ์ ๋๋ค.
ํ์ฉ SMART TS XL ๋๊ท๋ชจ ์ฝ๋ฐฑ ํฌ ๋ฆฌํฉํ ๋ง์ ์ํ
๋น๋๊ธฐ JavaScript ๋ฆฌํฉํ ๋ง์ ์๊ท๋ชจ ํ๋ก์ ํธ์์๋ ๊ฐ๋จํ์ง๋ง, ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์๋ ํจ์ฌ ๋ ์ด๋ ค์์ง๋๋ค. ์ฝ๋ฐฑ ํจํด์ ์ฌ๋ฌ ํ์ผ, ๋ชจ๋ ๋๋ ์๋ํํฐ ํตํฉ์ ๊น์ด ํ๋ฌปํ ์์ ์ ์์ต๋๋ค. ์ด๋ฅผ ์๋์ผ๋ก ์ถ์ ํ๋ ๊ฒ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ํน์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค. SMART TS XL ํ์๊ฐ๋ฉ๋๋ค.
SMART TS XL TypeScript ๋ฐ JavaScript ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ค์บํ๊ณ ํ์ผ ๊ฐ ์ ์ด ํ๋ฆ์ ๋งคํํ์ฌ ํ์ด ๊น์ด ์ค์ฒฉ๋ ๋น๋๊ธฐ ๋ก์ง์ โโ์๋ณํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. Promise์ ๊ธฐ์กด ์ฝ๋ฐฑ์ ํผํฉํ๋ ํ์ด๋ธ๋ฆฌ๋ ํจํด์ ํฌํจํ ์ฝ๋ฐฑ ์ฒด์ธ์ ๊ฐ์งํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์์ฑ์ ๋น๋๊ธฐ ๋ก์ง์ด ์ฒ์์๋ ๋ช ํํ์ง ์์ ๋ ๊ฑฐ์ ์์คํ ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ ์ด ํ๋ฆ์ ์๊ฐ์ ์ผ๋ก ํํํจ์ผ๋ก์จ, SMART TS XL ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ต๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ํซ์คํ์ ๋ ธ์ถ์ํต๋๋ค.
๋ ๋ค๋ฅธ ํต์ฌ ๊ธฐ๋ฅ์ ๋น๋๊ธฐ ์คํ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ฐ ์ข ์์ฑ์ ํ๋ฉดํํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฝ๋ฐฑ ๋ก์ง์ ๋ฏธ๋ค์จ์ด์์ ์๋น์ค, ๋ฐ์ดํฐ ์ ์ฅ์์ ์ด๋ฅด๊ธฐ๊น์ง ์ฝ๋๋ฒ ์ด์ค์ ์ฌ๋ฌ ๊ณ์ธต์ ์ค๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. SMART TS XL ์ด๋ฌํ ์ ํ๋ฅผ ์ถ์ ํ์ฌ ํ์ด ๋ณ๋ชฉ ํ์, ์ค๋ณต ํจํด ๋๋ ์์ ํ์ง ์์ ์ํธ ์ข ์์ฑ์ ํ์ ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฆฌํฉํฐ๋ง ๊ณํ์ ํจ์ฌ ๋ ์ ๋ต์ ์ผ๋ก ์๋ฆฝํ๊ณ ํ๊ท ์ํ์ ์ค์ผ ์ ์์ต๋๋ค.
๊ธฐ์ ํ์ ๊ฒฝ์ฐ ํ์ฅ์ฑ์ด ๊ฐ์ฅ ํฐ ์ด์ ์ ๋๋ค. SMART TS XL ์์ฒ ๊ฐ์ ํ์ผ์ ๊ฑธ์ณ ๋ฆฌํฉํ ๋ง ๊ณํ์ ์ธ์ธ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ค์ํ ์์ญ์ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ , ๊ณตํต ์ฝ๋ฐฑ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฃนํํ๊ณ , ์ผ๊ด๋ ๋ณํ ํจํด์ ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Promise๋ก ์ผ๊ด ๋ํํ ์ ์๋ ํจ์๋ฅผ ์๋ณํ๊ฑฐ๋ async/await๊ฐ ๋ถ์์ฉ ์์ด ๊ฐ๋ ์ฑ์ ํฅ์์ํค๋ ๋ถ๋ถ์ ํ์ ํ ์ ์์ต๋๋ค.
๋ง์ ์ค์ ์๋๋ฆฌ์ค์์ SMART TS XL ์กฐ์ง์ด ์ฝ๋ฐฑ ํฌ์ ์ด๊ธฐ ๋ฐ๊ฒฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ ์ ์๋๋ก ํ์ต๋๋ค. ์ฝ๋ ๊ฒํ ๋ ์์ ์ ๊ฒ์ ์์กดํ๋ ๋์ , ํ์ ๋น๋๊ธฐ ๋ณต์ก์ฑ์ ๋ํ ์ฆ๊ฐ์ ์ธ ํต์ฐฐ๋ ฅ์ ์ป์ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์ ๋ถ์ฑ ๊ฐ์๋ฅผ ๊ฐ์ํํ๊ณ ๋๊ท๋ชจ ๋น๋๊ธฐ ์์คํ ์ ์ ์ง ๊ด๋ฆฌ ์ฉ์ด์ฑ์ ํฅ์์ํต๋๋ค.
ํตํฉํ์ฌ SMART TS XL ๋ฆฌํฉํ ๋ง ํ๋ก์ธ์ค์ ์๋ ์ฝ๋ ์ ๋ฆฌ์์ ์๋ํ๋ ์ํคํ ์ฒ ํ์์ผ๋ก ์ ํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ฝ๋ฐฑ ํฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ ๋ฟ๋ง ์๋๋ผ ์ฅ๊ธฐ์ ์ธ ๋น๋๊ธฐ ์ฝ๋ ๊ฑด๊ฐ์ ์ํ ๊ธฐ๋ฐ์ ๋ง๋ จํด ์ค๋๋ค.
์ฝ์์ ์ฌ์ฉํด์ผ ํ ๋, ์์ ํ Async/Await๋ฅผ ์ฌ์ฉํด์ผ ํ ๋
๋ชจ๋ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๋ฌธ์ ์ ๋ํ ๋จ์ผ ํด๊ฒฐ์ฑ ์ ์์ต๋๋ค. Promise์ async/await๋ ๋ชจ๋ ์ฅ์ ์ด ์์ผ๋ฉฐ, ๊ฐ ๊ธฐ๋ฅ์ ์ธ์ ์ฌ์ฉํด์ผ ํ๋์ง ์ดํดํ๋ ๊ฒ์ ํ๋ ฅ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
Promise๋ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ๊ณผ ํจ์ ํจํด์ด ์ค์ํ ๊ฒฝ์ฐ์ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก ๋จ์ ์์ต๋๋ค. ํนํ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋น๋๊ธฐ ํจ์๋ฅผ ์ฌ์ฉํ๋๋ก ๊ฐ์ํ๋ ๊ฒ๋ณด๋ค ํ์ค Promise๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ๋ ์ ์ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ํธ๋ฆฌํฐ ๊ณ์ธต์์ ์ ์ฉํฉ๋๋ค. Promise๋ ๋์ ๋๋ ์กฐ๊ฑด ๋ ผ๋ฆฌ๋ฅผ ์ฒด์ด๋ํ ๋, ํนํ ๋ฏธ๋ค์จ์ด, ๊ตฌ์ฑ ๋ก๋ ๋๋ ์ง์ฐ ์ฐ์ฐ์ ์ฒ๋ฆฌํ ๋ ํจ๊ณผ์ ์ ๋๋ค.
๋ฐ๋ฉด, ๋น๋๊ธฐ/๋๊ธฐ(async/await)๋ ๋น์ฆ๋์ค ๋ก์ง, ์ปจํธ๋กค๋ฌ ํ๋ฆ, ์๋น์ค ์ค์ผ์คํธ๋ ์ด์ ๋ฑ ๋ช ํ์ฑ๊ณผ ์ ํ ์คํ์ด ์ค์ํ ๋ชจ๋ ์ํฉ์ ์ ํฉํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ต์ํ์ ์ ์ ์ ๋ถ๋ด๊ณผ ์๊ฐ์ ๋ฐฉํด ์์ ์์ด ์ ์ด ํ๋ฆ์ ๋ํด ์ถ๋ก ํ ์ ์์ต๋๋ค. ๋น๋๊ธฐ/๋๊ธฐ ํจ์๋ ์ฝ๊ธฐ, ํ ์คํธ, ๋๋ฒ๊น ์ด ๋ ์ฝ์ต๋๋ค.
ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์์ ํนํ ์ ์ง์ ์ธ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ผ๋ฐ์ ์ ๋๋ค. ์ ์์ค ํจ์์์ Promise๋ฅผ ๋ฐํํ๋ ๋์์ ๊ณ ์์ค ์ปดํฌ๋ํธ์์ async/await๋ฅผ ํตํด Promise๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถฉ๋ถํ ํ์ฉ๋ฉ๋๋ค. ํต์ฌ์ ์ผ๊ด์ฑ์ ๋๋ค. ๊ฐ ํ์ ๊ฐ ๋ชจ๋ธ์ด ์ ์ฉ๋๋ ๊ณณ์ ๋ํ ํ์ค์ ์ ์ํ๊ณ ๋ฆฐํฐ, ๋ฌธ์ํ ๋ฐ ์ฝ๋ ๊ฒํ ๋ฅผ ํตํด ์ด๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
์ฝ๋ฐฑ ํฌ์ ๋ฆฌํฉํ ๋งํ๋ ๊ฒ์ ๋จ์ํ ๊ตฌ๋ฌธ์ ๋ฐ๊พธ๋ ๊ฒ์ด ์๋๋๋ค. ํ๋ฆ ์ ์ด๋ฅผ ๊ฐ์ ํ๊ณ , ์ธ์ง ๋ถํ๋ฅผ ์ค์ด๋ฉฐ, ํ์ ์ฌ๊ณ ๋ฐฉ์๊ณผ ํ์ ๋ฐฉ์์ ๋ง์ถฐ ๋น๋๊ธฐ ๋ก์ง์ โโ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค. ์ฌ๋ฐ๋ฅธ ์ฌ๊ณ ๋ฐฉ์๊ณผ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉด SMART TS XL๋น๋๊ธฐ ์ฝ๋๋ฅผ ํ๋ํํ๊ณ ๊ธฐ์ ์ , ์ด์์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ ๊ธฐ๋ฐ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.