๐Ÿ“ [JS ๊ณต๋ถ€๊ธฐ๋ก] ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ณต๋ถ€ ๋‚ด์šฉ

์ œ๋ก ยท2022๋…„ 5์›” 9์ผ
1

[JS ๊ณต๋ถ€๊ธฐ๋ก] TIL โœจ

๋ชฉ๋ก ๋ณด๊ธฐ
3/12

JS ๊ณต๋ถ€ ์ค‘ ๋˜ ํ•˜๋‚˜์˜ ๋‚œ๊ด€

์˜ฌ ๊ฒƒ์ด ์™”๋‹ค. JS๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์–ด๋ ค์šด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ๋‚ด์šฉ๋“ค์ด ๋งŽ์ด ๋‚˜์˜ค๋Š”๋ฐ ๋น„๋™๊ธฐ๋Š” ๊ทธ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์‚ฌ์‹ค ๊ฐœ๋… ์ž์ฒด๋Š” ์–ด๋ ต์ง€ ์•Š์€๋ฐ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐฉ์‹๊ณผ ์ฒ˜๋ฆฌ ๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ดํ•ด๊ฐ€ ์‰ฝ์ง€๋Š” ์•Š๋‹ค. ์ผ๋‹จ ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•  ๋“ฏ ์‹ถ๋‹ค.

Promise ๊ฐ์ฒด: ์•ฝ์†์˜ ๊ฐ์ฒด

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” ๊ฒƒ์ด Promise ๊ฐ์ฒด์ด๋‹ค.
์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ฝ”๋“œ์˜ ์‹คํ–‰์ˆœ์„œ๋ฅผ ์•ฝ์†ํ•ด์ค€๋‹ค.

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

MDN์—์„œ์˜ Promise ์ •์˜์ธ๋ฐ, ์—ญ์‹œ๋‚˜ ์ฒ˜์Œ ๋ณด๊ณ  ํ•œ๋ฒˆ์— ์ดํ•ด๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ฒฝํ—˜์ƒ ๋น„๋™๊ธฐ๋Š” ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ๋œฏ์–ด๋ณด์•„์•ผ ๊ทธ๋‚˜๋งˆ ์ดํ•ด๊ฐ€ ์ž˜๋๋‹ค.

function a() {
  return new Promise((resolve) => {
    // resolve๊ฐ€ ์‹คํ–‰์ด ๋˜๋Š” ์œ„์น˜๊ฐ€ ๊ธฐ๋‹ค๋ฆผ์ด ์ข…๋ฃŒ๋˜๋Š” ์œ„์น˜
    setTimeout(() => {
      console.log('A')
      resolve()
    }, 1000)
  })
}

์œ„ ์ฝ”๋“œ๋Š” a() ํ•จ์ˆ˜๋ฅผ ์ •์˜ ํ•œ ๊ฒƒ์ด๊ณ  return์œผ๋กœ Promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. Promise ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋Š” resolve์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์ž ๊น, ๋น„๋™๊ธฐ๋ฅผ ์™œ ์“ฐ๋Š”์ง€ ๋ชฉ์ ์„ ๋ถ„๋ช…ํžˆ ์ƒ๊ฐํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ๋๊นŒ์ง€ ๋Œ๊ณ  ๊ฐ€์•ผํ•œ๋‹ค.
๋น„๋™๊ธฐ๋Š” ์ฝ”๋“œ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.

์ฝ”๋“œ๋ฅผ ๋ณด์ž๋ฉด, a() ํ•จ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•  ๊ฒฝ์šฐ setTimeout() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด 1์ดˆ ๋’ค์— 'A'๊ฐ€ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์„œ resolve๋Š” console.log('A')๊ฐ€ ์ถœ๋ ฅ ๋œ ์ดํ›„์— ์‹คํ–‰๋œ๋‹ค.
'A'๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ  ๋‚˜์„œ resolve ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๋ณด์žฅํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

function test() {
  const promise = a()
  promise.then(() => {
    console.log('B')
  })
}

์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด, test() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ a() ํ•จ์ˆ˜๋Š” promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด promise ๋ณ€์ˆ˜์— ๋‹ด๊ณ  promise ๊ฐ์ฒด๋Š” ๋’ค์— .then() ๋ฉ”์„œ๋“œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์ด resolve()๊ฐ€ ์‹คํ–‰๋˜๋Š” ์œ„์น˜์™€ ๊ฐ™๋‹ค.

์ฆ‰, a() ํ•จ์ˆ˜์˜ resolve ์œ„์น˜์˜ ์ฝ”๋“œ๋ฅผ .then ๋ฉ”์„œ๋“œ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๋” ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๋ฉด

// ๋ฉ”์„œ๋“œ ์ฒด์ด๋‹์œผ๋กœ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„
function test() {
  a().then(() => {
    console.log('B')
  })
}

a() ํ•จ์ˆ˜๋Š” promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ๋ฐ”๋กœ .then()์„ ์ด์–ด ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค.

ECMA 2015 ์ดํ›„์— ๋‚˜์˜จ async await๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด

async function test() {
  await a()
  console.log('B')
}
test() // A ๋‚˜์˜ค๊ณ  B

์ด๋ ‡๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ธˆ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

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

๊ทธ๋ ‡๋‹ค๋ฉด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์ธ Promise ๊ฐ์ฒด์™€ async await๋Š” ์–ธ์ œ ์“ฐ์ด๋Š”๊ฐ€?

์•ž์—์„œ ์„ค๋ช… ํ–ˆ๋“ฏ์ด ๋ชฉ์ ์€ ์ฝ”๋“œ์˜ ์‹คํ–‰์ˆœ์„œ ๋ณด์žฅ์ด๋‹ค.

์‹คํ–‰์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ์ฝœ๋ฐฑ์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๊ธด ํ•œ๋ฐ,
๊ณ„์†๋œ ์ฝœ๋ฐฑ์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๊ณ  ์„ฑ๋Šฅ์ €ํ•˜ ๋ฐ ๋ฆฌํŒฉํ† ๋ง์ด ์–ด๋ ต๋‹ค.

๊ทธ๊ฒƒ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Promise๋ฅผ ์“ฐ๊ณ  ๋” ์ตœ๊ทผ ํ˜•ํƒœ์˜ ๋น„๋™๊ธฐ ๋ฐฉ์‹์ธ ascyn awiat๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด๋‹ค.

์–ด๋–ค๊ฑธ ์“ฐ๊ธฐ์— ์•ž์„œ '๊ทธ๋ƒฅ ์“ฐ๋‹ˆ๊น ์“ฐ์ง€ ๋ญ~' ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๋ชฉ์ ๊ณผ ์™œ ์“ฐ์ด๋Š”์ง€๋ฅผ ๋ถ„๋ช…ํžˆ ์•Œ์•„์•ผ ๋” ๋‚˜์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

ํ™œ์šฉ

function a() {
  return new Promise((resolve) => {
    // resolve๊ฐ€ ์‹คํ–‰์ด ๋˜๋Š” ์œ„์น˜๊ฐ€ ๊ธฐ๋‹ค๋ฆผ์ด ์ข…๋ฃŒ๋˜๋Š” ์œ„์น˜
    setTimeout(() => {
      console.log('A')
      resolve()
    }, 1000)
  })
}

function b() {
  return new Promise((resolve) => {
    // resolve๊ฐ€ ์‹คํ–‰์ด ๋˜๋Š” ์œ„์น˜๊ฐ€ ๊ธฐ๋‹ค๋ฆผ์ด ์ข…๋ฃŒ๋˜๋Š” ์œ„์น˜
    setTimeout(() => {
      console.log('B')
      resolve()
    }, 1000)
  })
}

function c() {
  return new Promise((resolve) => {
    // resolve๊ฐ€ ์‹คํ–‰์ด ๋˜๋Š” ์œ„์น˜๊ฐ€ ๊ธฐ๋‹ค๋ฆผ์ด ์ข…๋ฃŒ๋˜๋Š” ์œ„์น˜
    setTimeout(() => {
      console.log('C')
      resolve()
    }, 1000)
  })
}

function d() {
  return new Promise((resolve) => {
    // resolve๊ฐ€ ์‹คํ–‰์ด ๋˜๋Š” ์œ„์น˜๊ฐ€ ๊ธฐ๋‹ค๋ฆผ์ด ์ข…๋ฃŒ๋˜๋Š” ์œ„์น˜
    setTimeout(() => {
      console.log('D')
      resolve()
    }, 1000)
  })
}

function test() {
  a()
    .then(() => {
      return b() // b() ํ•จ์ˆ˜๋Š” ์‹คํ•ด๋˜๋ฉด promise ๊ฐ์ฒด๊ฐ€ ๋‚˜์˜ค๊ณ  ๊ทธ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ฒด์ด๋‹ ํ˜•ํƒœ๋กœ ์ž‘์„ฑ๊ฐ€๋Šฅ
    })
    .then(() => {
      return c()
    })
    .then(() => {
      return d()
    })
    .then(() => {
      console.log('Done!')
    })
}
  • ๋ชฉ์ : a(), b(), c(), d() ํ•จ์ˆ˜์˜ ์‹คํ–‰์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์‹ถ๋‹ค.
  • ํ™œ์šฉ: Promise ๊ฐ์ฒด(์•ฝ์†์˜ ๊ฐ์ฒด ํ™œ์šฉ, ์ฝ”๋“œ์˜ ์‹คํ–‰์ˆœ์„œ๋ฅผ ์•ฝ์†ํ•ด์ค˜!)

test() ํ•จ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•จ์œผ๋กœ์จ a, b, c, d ํ•จ์ˆ˜๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

๊ฐ๊ฐ Promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ ์ฒด์ด๋‹ ํ˜•ํƒœ๋กœ .then()์„ ํ™œ์šฉํ•œ ๋ชจ์Šต์ด๋‹ค.

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๋’ค๊ฐ€ ์ฝ”๋“œ ํ•œ ์ค„ ์ด๋ฏ€๋กœ ๋” ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•˜์ž๋ฉด

function test() {
  a()
    .then(() => b())
    .then(() => c())
    .then(() => d())
    .then(() => console.log('Done!'))
} // a, b, c, d ํ•จ์ˆ˜ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋จ

.catch(), .then(), finally()

Promise ๊ฐ์ฒด๋Š” 3๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • .then()์€ ์œ„ ์˜ˆ์‹œ์—์„œ ๋ดค๋“ฏ์ด resolve๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์œ„์น˜์™€ ๋˜‘๊ฐ™์ด .then()์„ ํ†ตํ•ด ์‹คํ–‰ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • .catch()

๋ฐ”๋กœ ์˜ˆ์‹œ๋ถ€ํ„ฐ ๋ณด์ž๋ฉด

// .catch()
function a(number) {
  return new Promise((resolve, reject) => {
    // ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ๋ชปํ•  ๋•Œ reject๊ฐ€ ๋ฐ˜ํ™˜๋จ
    if (number > 4) {
      reject()
    }
    // resolve๊ฐ€ ์‹คํ–‰์ด ๋˜๋Š” ์œ„์น˜๊ฐ€ ๊ธฐ๋‹ค๋ฆผ์ด ์ข…๋ฃŒ๋˜๋Š” ์œ„์น˜
    setTimeout(() => {
      console.log('A')
      resolve()
    }, 1000)
  })
}
a(5) // ์กฐ๊ฑด๋ฌธ์— ๊ฑธ๋ ค reject()๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. 

์œ„์—์„œ Promise ๊ฐ์ฒด๋Š” ๋‘ ๊ฐ€์ง€ ์ธ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ,
์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์‹คํ–‰ ๋  ๊ฒฝ์šฐ resolve๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด reject๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•˜์—ฌ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ˜ธ์ถœ๋˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • finally๋Š” resolve๊ฐ€ ์ถœ๋ ฅ๋˜๋“ ์ง€ reject๊ฐ€ ์ถœ๋ ฅ๋˜๋“ ์ง€ ์ตœ์ข…์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค.
function test() {
  a()
    .then(() => {
      // .then()์€ resolve()๊ฐ€ ์‹คํ–‰๋˜๋Š” ์œ„์น˜์™€ ๋™์ผ ์ฆ‰, ํŠน์ • ์‹œ์ ์˜ ์‹คํ–‰ ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ณด์žฅ
      console.log('Resolve')
    })
    .catch(() => {
      // .catch()๋Š” reject()๊ฐ€ ์‹คํ–‰๋˜๋Š” ์œ„์น˜์™€ ๋™์ผ ์ฆ‰, ํŠน์ • ์‹œ์ ์˜ ์‹คํ–‰ ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ณด์žฅ
      console.log('Recject')
    })
    .finally(() => {
      console.log('Done') // .then์ด๋‚˜ ํ˜น์€ .catch ์‹คํ–‰๋˜๊ณ  ๋‚˜์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰๋จ.
    })
}

์ด๋ ‡๊ฒŒ Promise์˜ ์„ธ๊ฐ€์ง€ ์ƒํƒœ๋Š”
์—๋Ÿฌ๊ฐ€ ๋‚ฌ์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

aync await๋Š” ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ?

Promise๋Š” ๋ญ ์•Œ๊ฒ ๊ณ .. ๊ทธ๋Ÿผ async await๋Š” ๋ญ”๋ฐ?!

์‚ฌ์‹ค Promise๊ฐ€ ์ฝ”๋“œ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ด์ฃผ๊ณ  ์ฝœ๋ฐฑ์ง€์˜ฅ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์™”์ง€๋งŒ,
์“ฐ๋‹ค๋ณด๋ฉด Promise ๋˜ํ•œ ์ฝœ๋ฐฑ ์ง€์˜ฅ์˜ ์ฝ”๋“œ ํ˜•ํƒœ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ๋„ ํ•œ๋‹ค.

// Promise์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์ฝœ๋ฐฑ์ง€์˜ฅ์˜ ๋ชจ์Šต
function test() {
  a().then(() => {
    b().then(() => {
      c.then(() => {
        d.then(() => {
          console.log('Done!')
        })
      })
    })
  })
}

๋”ฐ๋ผ์„œ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ฝœ๋ฐฑ์ง€์˜ฅ์„ ํ”ผํ•˜๊ณ  ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด async await๊ฐ€ ๋‚˜์™”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค!

์˜ˆ์‹œ๋ถ€ํ„ฐ ๋ณด์ž.

function a() {
  return new Promise((resolve, reject) => {
    if(number > 4) {
      reject()
      return
    }
    setTimeout(() => {
      console.log('A')
      resolve()
    }, 1000)
  })
}

async function test() {
  await a()
  b()
}

์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ฉด aํ•จ์ˆ˜๊ฐ€ ์ถœ๋ ฅ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค์Œ ์ฝ”๋“œ์ธ bํ•จ์ˆ˜๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

async await์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ

Priomise์˜ resolve, reject, finally์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ awync await ๊ตฌ์กฐ์—์„œ๋„ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

// ์—๋Ÿฌ
function test() {
  await a(5)
  console.log('Resolve!') // ์กฐ๊ฑด์— ์˜ํ•ด reject๊ฐ€ ์‹คํ–‰๋˜๋ฏ€๋กœ a() ํ•จ์ˆ˜ ๋‹ค์Œ ๋‚ด์šฉ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Œ(์—๋Ÿฌ ๋œธ)
}

// ํ•ด๊ฒฐ
function test() {
  try {
    await a(5)
  console.log('Resolve!')
  } catch(error) {
  console.log('Reject!') 
  } finally {
    console.log('Done')
  }
}
test() // ์กฐ๊ฑด์— ์˜ํ•ด catch ๊ตฌ๋ฌธ์ด ์ถœ๋ ฅ๋จ

try catch ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ์ฝ”๋“œ๊ฐ€ ์ž˜ ์‹คํ–‰๋œ๋‹ค๋ฉด try ๊ตฌ๋ฌธ ํ•จ์ˆ˜๊ฐ€ ์ง„ํ–‰๋˜๊ณ  ์—๋Ÿฌ๋‚˜ ์˜ˆ์™ธ์‚ฌํ•ญ์ด ์ƒ๊ธด๋‹ค๋ฉด catch ๊ตฌ๋ฌธ์ด ์‹คํ–‰๋œ๋‹ค.

ํŒŒ์ด์ฌ์˜ try๋ฌธ์ด๋ž‘ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด๋‹ค.

ํ™•์‹คํžˆ Promise ์ดํ›„์— ๋‚˜์˜จ async awiat ๊ตฌ์กฐ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ๋ชจ์Šต์•‹.

๋น„๋™๊ธฐ ๊ณต๋ถ€ ํ›„ ๋Š๋‚€์ 

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

"ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ”„๋ก ํŠธ์—”๋“œ ์ดˆ๊ฒฉ์ฐจ ์ธ๊ฐ• ์ฐธ์กฐ"

profile
Software Developer

0๊ฐœ์˜ ๋Œ“๊ธ€