promise

ํ”„๋ผ๋ฏธ์Šค๋Š” ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ๋งŒ ํ•œ๋‹ค.

exeucutor๋Š” ํ”„๋ผ๋ฏธ์Šค์˜ ์ƒํƒœ๋ฅผ ์ดํ–‰(fulfilled) ๋˜๋Š” ๊ฑฐ๋ถ€(rejected)๋กœ ๋ณ€๊ฒฝ์‹œํ‚จ๋‹ค.

์„ฑ๊ณต ํ˜น์€ ์‹คํŒจ๋งŒ ํ•œ๋‹ค. resolve๋‚˜ reject๊ฐ€ ๋˜์–ด ์ƒํƒœ๊ฐ€ ๊ฒฐ์ •๋˜๋ฉด, ์ดํ›„๋กœ๋Š” ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ํ”„๋ผ๋ฏธ์Šค์— resolve๋‚˜ reject๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋ฌด์‹œ๋œ๋‹ค.

resolve, reject ํ•จ์ˆ˜ ์ฆ‰์‹œ ํ˜ธ์ถœํ•˜๊ธฐ

executor์—์„œ ๊ผญ ๋น„๋™๊ธฐ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ํ›„, resolve๋‚˜ reject๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. resolve๋‚˜ reject๋ฅผ ์ฆ‰์‹œ ํ˜ธ์ถœํ•ด๋„ ๋œ๋‹ค.

์†Œ๋น„์ž : then, catch, finally

  • ํ”„๋ผ๋ฏธ์Šค ๊ฐ์ฒด : executor์™€ ์†Œ๋น„ ํ•จ์ˆ˜๋ฅผ ์ด์–ด์ฃผ๋Š” ์—ญํ• 

  • ์†Œ๋น„ํ•จ์ˆ˜๋Š” .then, .catch, .finally ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋“ฑ๋ก

then

  • ๋‘ ๊ฐœ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์ฝœ๋ฐฑ์€ ์ดํ–‰๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰๋œ๋‹ค. resolve์˜ ๊ฐ’์„ ๋ฐ›๋Š”๋‹ค.

  • ๋‘ ๋ฒˆ์งธ ์ฝœ๋ฐฑ์€ ๊ฑฐ๋ถ€๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰๋œ๋‹ค. reject์˜ ์—๋Ÿฌ๋ฅผ ๋ฐ›๋Š”๋‹ค.

  • ์˜ˆ์ œ

catch

  • ๋‚ด๋ถ€์ ์œผ๋กœ .then(undefined, onRejectedFunction)์„ ํ˜ธ์ถœํ•œ๋‹ค.

  • catch๋Š” ํ”„๋ผ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    • onRejected ํ•ธ๋“ค๋Ÿฌ ์•ˆ์—์„œ throws๊ฐ€ ์žˆ๊ฑฐ๋‚˜, Promise.rejected๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด catch๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”„๋ผ๋ฏธ์Šค๋Š” reject๋œ๋‹ค.

catch์—์„œ Error ๊ฐ์ฒด ๋ฐ˜ํ™˜ํ•˜๊ธฐ

catch์—์„œ ๋‹จ์ˆœํžˆ string์„ throwingํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค, Error ์ธ์Šคํ„ด์Šค๋ฅผ throwingํ•˜๋Š”๊ฒŒ ๋” ์ข‹๋‹ค. Error ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ stack trace์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

finally

  • ์ธ์ž๋ฅผ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ํ”„๋ผ๋ฏธ์Šค๊ฐ€ ์ดํ–‰๋œ ๊ฒƒ์ธ์ง€, ๊ฑฐ๋ถ€๋œ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ํ”„๋ผ๋ฏธ์Šค๊ฐ€ ์ดํ–‰ ๋˜๋Š” ๊ฑฐ๋ถ€๋˜๋ฉด, finally์˜ ์ฝœ๋ฐฑ์ด ์‹คํ–‰๋œ๋‹ค.

  • ํ”„๋ผ๋ฏธ์Šค์˜ ๊ฒฐ๊ณผ์— ์ƒ๊ด€์—†์ด ์‹คํ–‰๋˜์–ด์•ผํ•˜๋Š” cleanupํ•จ์ˆ˜๋‚˜ ์—ฐ์‚ฐ์„ ํ•ด์•ผํ•  ๋•Œ finally๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

  • finally๊ฐ€ ์„ค์ •ํ•œ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”„๋ผ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Last updated