๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

JS์˜ ํ•ต์‹ฌ Promise+Plus ๋ณธ๋ฌธ

๐Ÿ“’JS/โšกver.1

JS์˜ ํ•ต์‹ฌ Promise+Plus

4:Bee 2023. 4. 25. 01:16
728x90

Promise๋Š” ํด๋ž˜์Šค๋‹ค. Promise์˜ ๊ฐ์ฒด๋Š” ๋น„๋™๊ธฐ์˜ ์ž‘์—…(task) ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๊ธฐ๋ณธ Promise์˜ ๊ตฌ์กฐ
1)
function print() {
  const print = new Promise((res) => {
    res("res");
  })
  return print;
}
2)
function print() {
  return new Promise((res) => {
    res("res");
  })
}
const printer = print();
printer.then(console.log('print'));
3)
const print = new Promise((res) => {
  res("res");
})
print.then(success => { console.log(success) })
success์—๋Š” print(ํ•ด๋‹น ๋น„๋™๊ธฐ)์˜ ๋น„๋™๊ธฐ ์ž‘์—…์ด ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ resolve(res)๊ฐ€ success์— ๊ฐ’์„ ์ œ๊ณตํ•ด์ค€๋‹ค. ๋‹ค์‹œ๋งํ•ด ๋น„๋™๊ธฐ ์ž‘์—…์ด ์„ฑ๊ณตํ•˜๋ฉด .then๊ตฌ๋ฌธ์˜ success๊ฐ€ res๊ฐ’์„ ๋ฐ›์•„ ํ”„๋ฆฐํŠธ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ์ง‘์ค‘ํ•ด์„œ ๋ด์•ผํ•˜๋Š” ๊ฒƒ์€ ํ•จ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ 1)promise์™€ 3)ํ™”์‚ดํ‘œ ํ‘œ๊ธฐ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•จ์ˆ˜์ด๋‹ค. 1)ํ•จ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ promise๋Š” return์ด ์—†์ด ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋˜๋Š” ์ˆœ๊ฐ„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋‚˜.ํ•˜์ง€๋งŒ 3)์˜ ํ•จ์ˆ˜๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค ๊ทธ ์ด์œ ๋Š” ๋ฐ”๋กœ ํ™”๋ฐœํ‘œํ•จ์ˆ˜ ์•ˆ์—์„œ return๋ฌธ์ด ์œ ์ผํ•˜๋‹ค๋ฉด ์ค‘๊ด„ํ˜ธ์™€ return์ด ์ƒ๋žต๋˜๋ฉด์„œ ๋งˆ์ง€๋ง‰ 3)๊ณผ ๊ฐ™์€ ํ‘œ๊ธฐ๊ฐ€ ์ด๋ฃจ์–ด ์ง€๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ 1)์—์„œ๋ถ€ํ„ฐ 3)์€ ํ˜•ํƒœ์™€ promise์ธ ์ƒ์„ฑ์ž ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹๊ณผ ์ ‘๊ทผ์ด ๋‹ค๋ฅผ ๋ฟ ๊ฒฐ๊ณผ๋Š” ๋ชจ๋‘ ๊ฐ™๋‹ค. 

 

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ - JavaScript | MDN

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ํ‘œํ˜„(arrow function expression)์€ ์ „ํ†ต์ ์ธ ํ•จ์ˆ˜ํ‘œํ˜„(function)์˜ ๊ฐ„ํŽธํ•œ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ์ ์ด ์žˆ๊ณ  ๋ชจ๋“  ์ƒํ™ฉ์— ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

developer.mozilla.org

 ์œ„์˜ ์„ค๋ช…์ด ํ™”์‚ดํ‘œ๊ธฐ๋ฒ•์„ ์ค‘์‹ฌ์œผ๋กœ ์ด์•ผ๊ธฐํ•œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์กฐ๊ธˆ ๋” ์ƒ๊ฐํ•ด๋ณด๋ฉด ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ ์–ด๋””์— ์–ด๋–ป๊ฒŒ ๋‹ด๊ฒผ๋Š”์ง€ ์˜€๋ณผ ์ˆ˜ ์žˆ๋‹ค. 1)๋ฒˆ์˜ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด์„œ print๋ผ๋Š” ๋ณ€์ˆ˜์— promise๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ print์— promise ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ๋‹ด์€ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๋ฐ˜ํ™˜๊ฐ’ return์„ ์‚ฌ์šฉํ•จ์œผ๋กœ promise๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์„ ํ•จ์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค. (๋ฐ˜ํ™˜์ด ๋‘๋ฒˆ ์ด๋ฃจ์–ด์ง€๋Š” ๊ตฌ์กฐ์ด๋‹ค. new Promise์™€ return.)๊ทธ๋ž˜์•ผ const printer๋ผ๋Š” ๋ณ€์ˆ˜์— ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๋‹ด์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 3)๋ฒˆ์€ 1)๋ฒˆ์˜ ํ•จ์ˆ˜๋ฅผ ์™„์ „ํžˆ ํƒˆํ™˜ํ•ด์„œ const print์— promise๋ฅผ ํ• ๋‹นํ•œ ๊ฒƒ์ด๋‹ค. ์ฆ‰, print๊ฐ€ ๊ณง promise์ธ ๊ฒƒ์ด๋‹ค,.๊ทธ๋ฆฌ๊ณ  return์ด ์—†๋Š” ์ด์œ ๋Š” ์œ„์— ์„ค๋ช…ํ–ˆ ๋“ฏ ์ƒ๋žต์ด ๋œ๊ฒƒ์ด๋‹ค.

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

๋งํฌ๋ฅผ ํ†ตํ•ด ์žฌ๋ฏธ์žˆ๋Š” ์˜ˆ์ œ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Promise ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ํ•œ ๋ฐฉ๋ฒ•์ธ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฃจ๋ฉด์„œ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์— ๋Œ€ํ•œ ๊ฐœ๋…๋„ ํ•จ๊ป˜ ์„ค๋ช…์„ ๋“œ๋ ธ๋Š”๋ฐ์š”. ์ž˜ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„์€ ์•„๋ž˜ ํฌ์ŠคํŒ… ๋จผ์ € ์ฝ์–ด ๋ณด์‹œ๊ธธ ๋ฐ”๋ž„๊ฒŒ์š” :) sangminem.tistory.com/275 [์ž๋ฐ”์Šค

sangminem.tistory.com

 

Promise - JavaScript | MDN

Promise ๊ฐ์ฒด๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์ด ๋งž์ดํ•  ๋ฏธ๋ž˜์˜ ์™„๋ฃŒ ๋˜๋Š” ์‹คํŒจ์™€ ๊ทธ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

developer.mozilla.org

 

728x90
Comments