Zoeeey
Stack flows in you
Zoeeey
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (155)
    • ๐Ÿ’ก UXUI (4)
      • UXUI (2)
      • UI (2)
      • UX (0)
    • ๐ŸŸจ JavaScript (66)
      • ๊ฐœ๋… (42)
      • ์ •๋ฆฌ (2)
      • ๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ) (15)
      • ์‘์šฉํ•˜์—ฌ ์ž๋™ํ™”or๋ฌธ์ œํ•ด๊ฒฐํ•˜๊ธฐ (2)
      • ๊ธฐํƒ€ (5)
    • โš›๏ธ React (49)
      • ๊ฐœ๋… (27)
      • ๊ฐœ๋…(Redux) (3)
      • ์ •๋ฆฌ (4)
      • ๋ฌธ์ œํ’€๊ธฐ (์ฝ”๋”ฉ์• ํ”Œ: React) (15)
    • ๐Ÿ“˜ TypeScript (10)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€๊ธฐ (์ฝ”๋”ฉ์• ํ”Œ) (2)
    • ๐ŸŒ HTML,CSS (18)
      • ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋“ค (10)
      • ๋’ค๋Šฆ๊ฒŒ ์•Œ์•„์„œ ๋ผˆ์•„ํ”ˆ ์œ ์šฉํ•œ CSS (6)
      • ๊ธฐํƒ€ ์ž์ฃผ ์“ฐ๋Š” CSS (2)
    • ๐Ÿ’ป CS (8)
      • CS (5)
      • ์ •๊ทœํ‘œํ˜„์‹ (2)
      • Git,Github (1)

ํƒœ๊ทธ

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • useEffect
  • CS
  • json
  • Ajax
  • Props
  • axios
  • CSS
  • array
  • class
  • TypeScript
  • ์˜ค๋ฅ˜
  • redux
  • object
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž
  • ์ฝ”๋”ฉ์• ํ”Œ
  • react
  • state
  • UXUI
  • JavaScript
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
hELLO ยท Designed By ์ •์ƒ์šฐ.
Zoeeey

Stack flows in you

๐ŸŸจ JavaScript/๊ฐœ๋…

[๋“œ๋ฆผ์ฝ”๋”ฉ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (2) : ์ฝœ๋ฐฑ์ง€์˜ฅ ํƒˆ์ถœ, Promise (State, Producing)

2022. 7. 22. 15:16

Promise

Promise๋Š” javascript์— ๋‚ด์žฅ๋˜์–ด์žˆ๋Š” object๋กœ, ์ด๋ฅผ ํ†ตํ•ด์„œ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋„คํŠธ์›Œํฌํ†ต์‹ ์„ ํ•œ๋‹ค๋˜์ง€, ํŒŒ์ผ์„ ์ฝ์–ด์˜จ๋‹ค๋˜์ง€ ํ•˜๋Š” ๋“ฑ์˜ ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ํ•  ๋•Œ๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฏ€๋กœ Promise๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ๋„ ์ผ์–ด๋‚˜๋Š” ๋ถˆํ•„์š”ํ•œ ๋„คํŠธ์›Œํฌํ†ต์‹ (promiseํ•จ์ˆ˜์˜ ์‹คํ–‰)์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•œ๋‹ค.
  • new Promise๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ์ˆœ๊ฐ„, ํ•ด๋‹น executor ํ•จ์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ฃผ์˜ํ•˜์ž.

promise๋Š” ์•„๋ž˜ ๋‘ ๊ฐ€์ง€๋ฅผ ์—ผ๋‘์— ๋‘๋ฉด ์ข‹๋‹ค.


1. State(์ƒํƒœ)

process๊ฐ€ ๋ฌด๊ฑฐ์šด operation์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€/์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ์„ฑ๊ณตํ–ˆ๋Š”์ง€/์‹คํŒจํ–ˆ๋Š”์ง€์˜ ์ƒํƒœ

  • pending : operation์„ ์ˆ˜ํ–‰ ์ค‘์ธ ์ƒํƒœ
  • fulfilled : operation์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ ์ƒํƒœ
  • rejected : ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๋“ฑ ์‹คํŒจํ•œ ์ƒํƒœ

2. Producing

Producer(๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‚ฌ๋žŒ)์™€ Consumer(๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„ ํ•˜๋Š” ์‚ฌ๋žŒ)์˜ ์ฐจ์ด

Producer

- resolve

const promise = new Promise((resolve, reject) => {
  //doing some heavy work (network, read files)
  console.log('doing something...');
  setTimeout(() => {
    resolve('Noran');
  }, 2000);
})

- reject

const promise = new Promise((resolve, reject) => {
  //doing some heavy work (network, read files)
  console.log('doing something...');
  setTimeout(() => {
    reject(new Error('no network'));
  }, 2000);
})

Consumer

- then

// ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋œ๋‹ค๋ฉด
promise.then((value) => { //value๋Š” ์œ„์˜ promiseํ•จ์ˆ˜์—์„œ resolve๋œ data
  console.log(value);
})

//"Noran"

- catch ์ถ”๊ฐ€

// ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋œ๋‹ค๋ฉด
promise
  .then(value => { //value๋Š” ์œ„์˜ promiseํ•จ์ˆ˜์—์„œ resolve๋œ data
  console.log(value);
}) //then์€ ๋˜‘๊ฐ™์€ promise๋ฅผ returnํ•œ๋‹ค.
// reject๋˜์–ด error๊ฐ€ ์ผ์–ด๋‚œ๋‹ค๋ฉด
  .catch(error => { //error๋ฅผ uncaught๊ฐ€ ์•„๋‹Œ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋œฐ ์ˆ˜ ์žˆ๊ฒŒ
  console.log(error);
});

//Error: no network

- finally ์ถ”๊ฐ€

// ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋œ๋‹ค๋ฉด
promise
  .then(value => { //value๋Š” ์œ„์˜ promiseํ•จ์ˆ˜์—์„œ resolve๋œ data
  console.log(value);
}) //then์€ ๋˜‘๊ฐ™์€ promise๋ฅผ returnํ•œ๋‹ค.
// error๊ฐ€ ๋œฌ๋‹ค๋ฉด
  .catch(error => { //error๋ฅผ uncaught๊ฐ€ ์•„๋‹Œ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋œฐ ์ˆ˜ ์žˆ๊ฒŒ
  console.log(error);
})
// ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ป๋“  ๋งˆ์ง€๋ง‰์— ์‹คํ–‰๋œ๋‹ค
.finally(() => {
  console.log('์–ด์จŒ๋“  ์‹คํ–‰๋จ');
});

//Error: no network
//'์–ด์ฉ„๋“  ์‹คํ–‰๋จ'

์ถœ์ฒ˜ : ๋“œ๋ฆผ์ฝ”๋”ฉ https://www.youtube.com/@dream-coding / MDN https://developer.mozilla.org/ko/

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐ŸŸจ JavaScript > ๊ฐœ๋…' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋“œ๋ฆผ์ฝ”๋”ฉ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (4) : ์ฝœ๋ฐฑ์ง€์˜ฅ ํƒˆ์ถœ, Promise (callback hell ์ฝ”๋“œ๊ฐœ์„ ํ•˜๊ธฐ)  (0) 2022.10.04
[๋“œ๋ฆผ์ฝ”๋”ฉ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (3) : promise๋กœ Error Handlingํ•˜๊ธฐ (reject, catch ํ™œ์šฉ)  (0) 2022.10.04
[๋“œ๋ฆผ์ฝ”๋”ฉ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (1) : ์ฝœ๋ฐฑ์ง€์˜ฅ ์˜ˆ์‹œ  (0) 2022.07.22
[mdn, ๋“œ๋ฆผ์ฝ”๋”ฉ, ์ฝ”๋”ฉ์• ํ”Œ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (1) : ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ๊ฐœ๋…  (0) 2022.07.12
[๋“œ๋ฆผ์ฝ”๋”ฉ] JSON to Object (parse)  (0) 2022.07.12
    '๐ŸŸจ JavaScript/๊ฐœ๋…' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [๋“œ๋ฆผ์ฝ”๋”ฉ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (4) : ์ฝœ๋ฐฑ์ง€์˜ฅ ํƒˆ์ถœ, Promise (callback hell ์ฝ”๋“œ๊ฐœ์„ ํ•˜๊ธฐ)
    • [๋“œ๋ฆผ์ฝ”๋”ฉ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (3) : promise๋กœ Error Handlingํ•˜๊ธฐ (reject, catch ํ™œ์šฉ)
    • [๋“œ๋ฆผ์ฝ”๋”ฉ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (1) : ์ฝœ๋ฐฑ์ง€์˜ฅ ์˜ˆ์‹œ
    • [mdn, ๋“œ๋ฆผ์ฝ”๋”ฉ, ์ฝ”๋”ฉ์• ํ”Œ] ์ฝœ๋ฐฑํ•จ์ˆ˜ (1) : ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ๊ฐœ๋…
    Zoeeey
    Zoeeey
    ๊ธธ๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์งง๊ฒŒ ๊ทธ๋ฆฌ๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”