๋๊ธฐ์ฒ๋ฆฌ์ ๋น๋๊ธฐ์ฒ๋ฆฌ์ ์ฐจ์ด๋ฅผ ๋งํด๋ณด์ธ์.
๋๊ธฐ์ฒ๋ฆฌ๋ ํ ์์ฒญ ์์
์ด ๋๋์ผ ๋ค์ ์์
์ ์ด์ด์ ํ ์ ์๋ ๋ฐฉ์์ด๊ณ ๋น๋๊ธฐ์ฒ๋ฆฌ๋ ํ ์์ฒญ์์
์ด ์งํ๋๋ ์ค์ ๋ค์์์
์ ๋ฐ๋ก ์ด์ด์ ํ๋ ๋ฐฉ์์
๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํน์ฑ์ผ๋ก ๊ฐ์ง๋๋ค.
Callback ํจ์์ ๋ํด์ ์ค๋ช
ํด๋ณด์ธ์.
๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ํจ์ํธ์ถ์ ํ๋ผ๋ฏธํฐ๋ก ํจ์๋ฅผ ์ฝ์
ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํธ์ถ๋ ํจ์๊ฐ ์์ ์ ๋ก์ง์ ๋ชจ๋ ์ข
๋ฃํ๊ณ ์ฝ๋ฐฑํจ์๋ฅผ ์คํํ๋ฉด ํด๋นํจ์๋ฅผ ํธ์ถํ๋ ํจ์๊ฐ ๋ฏธ๋ฆฌ ์ง์ ํด๋ ์ฝ๋ฐฑํจ์๋ฅผ ์คํํฉ๋๋ค.
function callback ( param ) {
console . log ( param , 'is done!' ) ;
}
function callee ( param , callback ) {
console . log ( param ) ;
callback ( ) ;
}
function caller ( param ) {
callee ( param , callback ) ;
}
caller ( 'hello' ) ;
// ๊ฒฐ๊ณผ:
// hello
// hello is done!
Promise ์ ๋ํด์ ์ค๋ช
ํด๋ณด์ธ์.
ํ๋ก๋ฏธ์ค๋ ๋น๋๊ธฐ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ์ฒด์
๋๋ค.
ํ๋ก๋ฏธ์ค๋ ์์ฑ์์ ์ธ์๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๊ณ ์ด ํจ์๋ resolve ์ reject ๋ฅผ ์ธ์๋ก ๊ฐ์ง๋๋ค.
resolve ๋ ํ๋ก๋ฏธ์ค์ ์ฝ๋ฐฑ ํจ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์ ๋ ์คํ๋๋ฉฐ then
์ ํตํด์ resolve์ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ ๋ฐ์ ์ ์์ต๋๋ค.
reject ๋ ํจ์๊ฐ ์คํจํ์ ๋ ์คํ๋๋ ๋ก์ง์
๋๋ค. ํ๋ก๋ฏธ์ค ํจ์์ catch ๋ฅผ ์ฌ์ฉํด ์๋ฌ ์ฒ๋ฆฌ ๋ก์ง์ ์ง์ ํ ์ ์์ต๋๋ค.
Async & Await ์ ๋ํด์ ์ค๋ช
ํด๋ณด์ธ์.
async/await ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ES6์์ ์๋กญ๊ฒ ์ถ๊ฐ๋ ๋ฌธ๋ฒ์
๋๋ค.
ํจ์์ ์ ์ธ ์์ async
ํค์๋๋ฅผ ๋ถ์ด๊ณ Promise ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ํจ์์ ํธ์ถ ์์ await
ํค์๋๋ฅผ ๋ถ์
๋๋ค.
Promise ๋ณด๋ค ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋
์ฑ์ด ์ข์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.