Asynchronous Processing
์บกํดํ๊ต๋์ ํฌ์คํ ์ ์ฝ๊ณ ์ ๋ฆฌํ์ต๋๋ค
JavaScript์ ๋น๋๊ธฐ ์ฒ๋ฆฌ
๋น๋๊ธฐ ์ฒ๋ฆฌ๋? ์ด๋ค ์ฝ๋์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง์๊ณ ๋ค์ ์ฝ๋๋ฅผ ๋จผ์ ์คํํ๋ ํน์ฑ
Example
jQuery ajax
setTimeout() - Web API์ ํ ์ข ๋ฅ๋ก ์ง์ ํ ์๊ฐ๋งํผ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์คํ
๋ฌธ์ ์ -> ์ฝ๋ ์์ฑ์ 1-2-3 ์ด์ด๋ ์ค์ ์คํ์ 1-3-2
Callbackํจ์๋ก ๋ฌธ์ ์ ํด๊ฒฐ
์ฝ๋ฐฑํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ๋ก์ง์ด ๋๋ฌ์ ๋์๋ง ์ํ๋ ๋์์ ์คํ
Callback hell ์ฝ๋ฐฑ ์ง์ฅ
์ฝ๋ฐฑ ํจ์๋ฅผ ์ฐ์ํด์ ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ๋ฌธ์
ํด๊ฒฐ๋ฐฉ๋ฒ -> ์ฝ๋ฉ ํจํด์ผ๋ก ๊ฐ์ or Promise, Async ์ฌ์ฉ
Promise
์๋ฐ์คํฌ๋ฆฝํธ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ก ์ฃผ๋ก ์๋ฒ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํ์ํ ๋ ์ฌ์ฉ
Promise์ ์ธ๊ฐ์ง ์ํ
Pending(๋๊ธฐ) : ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ก์ง์ด ์์ง ์๋ฃ๋์ง ์์ ์ํ
new Promise()
Fulfilled(์ดํ) : ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ด ํ๋ก๋ฏธ์ค๊ฐ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํด์ค ์ํ
resolve(), then()
Rejected(์คํจ) : ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์คํจํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ํ
reject()
์คํจํ ์ด์ ๋ฅผcatch()
๋ก ๋ฐ์ ์ ์์
Promise Chaining
then()
๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ๋๋ฉด ์๋ก์ด ํ๋ก๋ฏธ์ค ๊ฐ์ฒด๊ฐ ๋ฐํ๋๊ณ ์ด๋ฅผ ์ด์ฉํด ์ฌ๋ฌ ๊ฐ์ ํ๋ก๋ฏธ์ค๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ ์ ์์
Promise Error Handling(reject()๊ฐ ํธ์ถ๋ ์คํจ ์ํ)
then()
์ ๋ ๋ฒ์งธ ์ธ์๋ก ์๋ฌ๋ฅผ ์ฒ๋ฆฌcatch()
์ด์ฉํ๊ธฐ
1๋ฒ์ ๊ฒฝ์ฐ
then()
์ ์ฒซ ๋ฒ์งธ ์ฝ๋ฐฑ ํจ์ ๋ด๋ถ์์์ ์ค๋ฅ๋ฅผ ์ ๋๋ก ์ก์๋ด์ง ๋ชปํจ ๋ฐ๋ผ์ ๋ ๋ง์ ์์ธ ์ฒ๋ฆฌ ์ํฉ์ ์ํด ๊ฐ๊ธ์ 2๋ฒcatch()
์ฌ์ฉ
async & await
์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํจํด ์ค ๊ฐ์ฅ ์ต๊ทผ์ ๋์จ ํจํด์ผ๋ก ๊ธฐ์กด์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ธ callback๊ณผ promise์ ๋จ์ ์ ๋ณด์ํ๊ณ ๊ฐ๋ฐ์๊ฐ ์ฝ๊ธฐ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ํจ
async & await example
callback func example
async & await ๊ธฐ๋ณธ ๋ฌธ๋ฒ
ํจ์ ์์
async
๋ผ๋ ์์ฝ์ด๋ฅผ ๋ถ์ํจ์์ ๋ด๋ถ ๋ก์ง ์ค HTTPํต์ ์ ํ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ฝ๋ ์์
await
๋ฅผ ๋ถ์๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฉ์๋๊ฐ ๊ผญ ํ๋ก๋ฏธ์ค ๊ฐ์ฒด๋ฅผ ๋ฐํํด์ผ
await
๊ฐ ์๋ํ๋๋ก ๋์ํจ
await
์ ๋์์ด ๋๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ฝ๋๋ axios ๋ฑ ํ๋ก๋ฏธ์ค๋ฅผ ๋ฐํํ๋ API ํธ์ถ ํจ์
async & await ์ฅ์
callback์ด๋ promise๋ณด๋ค ์งง์ ์ฝ๋์ ๊ฐ๋ ์ฑ
๊ธฐ์กด์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ฝ๋ ๋ฐฉ์์ผ๋ก ์ฌ๊ณ ํ์ง ์์๋ ๋จ
async & await ์์ธ ์ฒ๋ฆฌ
try catch
๋ฌธ๋ฒ ์ฌ์ฉ
Last updated