Async
1. ๋๊ธฐ์ ๋น๋๊ธฐ
๋๊ธฐ(synchronous)
ํน์ ์ฝ๋์ ์คํ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ ๋ ํ, ๋ค์ ์ฝ๋๋ฅผ ์ํํ๋ ๊ฒ
๋น๋๊ธฐ(asynchronous)
ํน์ ์ฝ๋์ ์คํ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ค์ ์ฝ๋๋ค์ ์ํํ๋ ๊ฒ
2. ๋น๋๊ธฐ JavaScript (Timer API)
setTimeout(callback, millisecond)
์ผ์ ์๊ฐ ํ์ ํจ์๋ฅผ ์คํ
parameter: ์คํํ ์ฝ๋ฐฑ ํจ์, ์ฝ๋ฐฑ ํจ์ ์คํ ์ ๊ธฐ๋ค๋ ค์ผ ํ ์๊ฐ (๋ฐ๋ฆฌ์ด)
return ๊ฐ: ์์์ ํ์ด๋จธ ID
clearTimeout(timerId)
setTimeout
ํ์ด๋จธ๋ฅผ ์ข ๋ฃparameter: ํ์ด๋จธ ID
return ๊ฐ: ์์
setInterval(callback, millisecond)
์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ ๊ฐ์ง๊ณ ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์คํ
parameter: ์คํํ ์ฝ๋ฐฑํจ์, ๋ฐ๋ณต์ ์ผ๋ก ํจ์๋ฅผ ์คํ์ํค๊ธฐ ์ํ ์๊ฐ ๊ฐ๊ฒฉ (๋ฐ๋ฆฌ์ด)
return ๊ฐ: ์์์ ํ์ด๋จธ ID
clearInterval(timerId)
setInterval
ํ์ด๋จธ๋ฅผ ์ข ๋ฃparameter: ํ์ด๋จธ ID
return ๊ฐ: ์์
3. Callback
๋น๋๊ธฐ๋ก ์ฝ๋๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋
callback
ํจ์ ํ์ฉ๊ทธ๋ฌ๋, ์ฝ๋๊ฐ ๊ธธ์ด์ง์๋ก ๋ณต์กํ๊ณ ๊ฐ๋ ์ฑ์ด ๋ฎ์์ง๋ callback Hell ๋ฐ์
4. Promise
new Promise
Promise
๋ class์ด๊ธฐ์new
ํค์๋๋ฅผ ํตํดPromise
๊ฐ์ฒด๋ฅผ ์์ฑPromise
๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ฝ๋ฐฑํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋๋ฐ, ์ด ์ฝ๋ฐฑํจ์๋resolve
,reject
ํจ์๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์Promise
๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉด ์ฝ๋ฐฑํจ์๋ ์๋์ผ๋ก ์คํ๋จ์ฝ๋๊ฐ ์ ์ฒ๋ฆฌ๋์๋ค๋ฉด
resolve
ํจ์๋ฅผ ํธ์ถํ๊ณ , ์๋ฌ ๋ฐ์ ์reject
ํจ์๋ฅผ ํธ์ถ
Promise ๊ฐ์ฒด์ ๋ด๋ถ ํ๋กํผํฐ
new Promise
๊ฐ ๋ฐํํ๋ Promise ๊ฐ์ฒด๋state
,result
๋ด๋ถ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๋ค๋ง, ์ง์ ์ ๊ทผํ ์ ์๊ณ
.then
,.catch
,.finally
๋ฉ์๋ ์ฌ์ฉํด ์ ๊ทผ ๊ฐ๋ฅ
State
๊ธฐ๋ณธ ์ํ๋
pending
. ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ฝ๋ฐฑํจ์๊ฐ ์ ์๋ํ๋ค๋ฉด โfulfilled
๋ก ๋ณ๊ฒฝ, ์๋ฌ ๋ฐ์ ์rejected
Result
๊ธฐ๋ณธ ์ํ๋
undefined
๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ฝ๋ฐฑํจ์๊ฐ ์ ์๋ํ์ฌresolve(value)
ํธ์ถ๋๋ฉด โ value๋ก, ์๋ฌ ๋ฐ์ํดreject(error)
ํธ์ถ๋๋ฉด โerror
๋ก ๋ณ๊ฒฝ
Then
์ฝ๋ฐฑํจ์์ ์์ฑํ๋ ์ฝ๋๋ค์ด ์ ์ฒ๋ฆฌ๋์๋ค๋ฉด
resolve
ํจ์ ํธ์ถ โ.then
๋ฉ์๋๋ก ์ ๊ทผ ๊ฐ๋ฅ.then
์์์ ๋ฆฌํดํ ๊ฐ์ดPromise
๋ผ๋ฉดPromise
๋ด๋ถ ํ๋กํผํฐresult
๋ฅผ ๋ค์.then
์ ์ฝ๋ฐฑํจ์์ ์ธ์๋ก ๋ฐ์์ดPromise
๊ฐ ์๋๋ผ๋ฉด ๋ฆฌํดํ ๊ฐ์.then
์ ์ฝ๋ฐฑํจ์ ์ธ์๋ก ๋ฐ์์ฌ ์ ์์
Catch
์ฝ๋ฐฑํจ์์ ์์ฑํ ์ฝ๋์ ์๋ฌ ๋ฐ์ ์
reject
ํจ์๋ฅผ ํธ์ถํ๊ณ.catch
๋ฉ์๋๋ก ์ ๊ทผ ๊ฐ๋ฅ
Finally
์ฝ๋ฐฑํจ์์ ์์ฑํ ์ฝ๋๋ค์ด ์ ์ ์ฒ๋ฆฌ ์ฌ๋ถ์ ๊ด๊ณ ์์ด
.finally
๋ฉ์๋๋ก ์ ๊ทผ ๊ฐ๋ฅ
Promise Chaining
๋น๋๊ธฐ ์์ ์ ์์ฐจ์ ์ผ๋ก ์งํํด์ผ ํ๋ ๊ฒฝ์ฐ
Promise all()
์ฌ๋ฌ ๊ฐ์ ๋น๋๊ธฐ ์์ ์ ๋์์ ์ฒ๋ฆฌํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
์ธ์๋ก๋ ๋ฐฐ์ด์ ๋ฐ์ผ๋ฉฐ, ํด๋น ๋ฐฐ์ด์ ์๋ ๋ชจ๋
Promise
์์ ์ฝ๋ฐฑํจ์ ๋ด ์์ฑํ๋ ์ฝ๋๋ค์ด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํด ์๋ก์ดPromise
๋ฅผ ๋ฐํ๋๋ถ์ด, ์ธ์๋ก ๋ฐ์ ๋ฐฐ์ด์
Promise
์ค ํ๋๋ผ๋ ์๋ฌ ๋ฐ์ ์, ๋๋จธ์งPromise
state์ ์๊ด์์ด ์ฆ์ ์ข ๋ฃ
5. Async, Await
async
,await
๋ก ๋ณต์กํPromise
์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑ ๊ฐ๋ฅํจ์ ์์
async
์ฌ์ฉํ๊ณ ,async
ํจ์ ๋ด์์๋งawait
ํค์๋ ์ฌ์ฉํ๊ธฐ: ์ด๋ ๊ฒ ์์ฑ๋ ์ฝ๋๋await
ํค์๋๊ฐ ์์ฑ๋ ์ฝ๋๊ฐ ๋์ํ ํ์ โ ๋ค์ ์์์ ์ฝ๋ ๋์
6. fetch API
fetch API
ํน์ URL๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๋ฐ์์ค๋ ์ญํ
์ด ๊ณผ์ ์ด ๋น๋๊ธฐ๋ก ์ด๋ฃจ์ด์ง๊ธฐ์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค์ ์๊ฐ์ด ๊ฑธ๋ฆผ
7. Axios
fetch API์ ๋น์ทํ ์ญํ ์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ธ๋ผ์ฐ์ , Node.js๋ฅผ ์ํ Promise API๋ฅผ ํ์ฉํ๋ HTTP ๋น๋๊ธฐ ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Fetch API๋ณด๋ค ์ฌ์ฉ์ด ๊ฐํธํ๋ฉด์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ๋ค์ด ํฌํจ๋จ
์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ค์น๊ฐ ํ์ํจ
์๋์ผ๋ก JSON ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ณํ๋จ
GET ์์ฒญ
POST ์์ฒญ
Last updated