Skip to content

Latest commit

ย 

History

History
50 lines (30 loc) ยท 1.9 KB

02_Asynchronous.md

File metadata and controls

50 lines (30 loc) ยท 1.9 KB

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

๋™๊ธฐ์ฒ˜๋ฆฌ์™€ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ์˜ ์ฐจ์ด๋ฅผ ๋งํ•ด๋ณด์„ธ์š”.

  • ๋™๊ธฐ์ฒ˜๋ฆฌ๋Š” ํ•œ ์š”์ฒญ ์ž‘์—…์ด ๋๋‚˜์•ผ ๋‹ค์Œ ์ž‘์—…์„ ์ด์–ด์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๊ณ  ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋Š” ํ•œ ์š”์ฒญ์ž‘์—…์ด ์ง„ํ–‰๋˜๋Š” ์ค‘์— ๋‹ค์Œ์ž‘์—…์„ ๋ฐ”๋กœ ์ด์–ด์„œ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํŠน์„ฑ์œผ๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

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 ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.