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

JavaScript ๋˜๋Š” TypeScript์™€ ๊ฐ™์€ ์ตœ์‹  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ Promise ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒํƒœ: Promise๋Š” ๋ณด๋ฅ˜, ์ดํ–‰, ๊ฑฐ๋ถ€์˜ ์„ธ ๊ฐ€์ง€ ์ƒํƒœ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๋ฅ˜ ์ค‘์€ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ์ดํ–‰ ๋ฐ ๊ฑฐ๋ถ€๋Š” ๊ฐ๊ฐ ์•ฝ์†์ด ์„ฑ๊ณต์ ์ธ ๊ฒฐ๊ณผ ๋˜๋Š” ์˜ค๋ฅ˜๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ๋ถˆ๋ณ€์„ฑ: Promise๊ฐ€ ํ™•์ •๋˜๋ฉด(์ดํ–‰ ๋˜๋Š” ๊ฑฐ๋ถ€) ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ด€๋ จ ์ž‘์—…์— ๋Œ€ํ•œ ์ผ๊ด€๋œ ์ถœ๋ ฅ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.
  • Thenable: Promise๋Š” ์ฒด๊ณ„์ ์ด๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” then() ์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Catch: Promise์—๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋œ catch() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ฒด๊ณ„์ ์ด๊ณ  ์ค‘์•™ ์ง‘์ค‘ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, AppMaster ํ”Œ๋žซํผ์— ๊ตฌ์ถ•๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์ด๋ฃจ์–ด์ง„ ๋น„๋™๊ธฐ API ์š”์ฒญ์„ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์—๋Š” ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„์™€์˜ ํ†ต์‹ , ์‘๋‹ต ๋Œ€๊ธฐ ๋ฐ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ผ๋ จ์˜ ์ž‘์—…์€ ๊ธฐ์กด ์ฝœ๋ฐฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ Promise๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฝ”๋“œ ์กฐ๊ฐ์€ JavaScript์˜ Fetch API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ Promise ๊ธฐ๋ฐ˜ API ์š”์ฒญ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

 fetch('https://api.example.com/data') .then(response => response.json()) .then(data => { // Process and utilize the data }) .catch(error => { // Handle errors });

Promise๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ AppMaster ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฐ•๋ ฅํ•œ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋‚ด์žฅ๋œ ์–ธ์–ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ด๊ณ  ์ƒ์‚ฐ์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‚ด์žฅ๋œ ๋™์‹œ์„ฑ ๊ธฐ๋Šฅ๊ณผ ๋น„๋™๊ธฐ ์ž‘์—…์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•œ ์ง€์›์œผ๋กœ ์ž˜ ์•Œ๋ ค์ง„ Go(golang) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Vue3 ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ JS/TS๋ฅผ ํ™œ์šฉํ•˜์—ฌ Promise ๋ฐ ๊ธฐํƒ€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ async/await์™€ ๊ฐ™์€ ๊ด€๋ จ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ์— ์•ฝ์† ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ฉํ•จ์œผ๋กœ์จ AppMaster ํŠนํžˆ ๊ธฐ์—… ๋ฐ ๊ณ ๋ถ€ํ•˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๋งฅ๋ฝ์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ ์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ง€๋˜๊ฑฐ๋‚˜ ์ง€์—ฐ๋˜๊ฑฐ๋‚˜ ์‘๋‹ตํ•˜์ง€ ์•Š๊ฒŒ ๋˜๋Š” ์œ„ํ—˜ ์—†์ด ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ์€ API ์š”์ฒญ, ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ, ํŒŒ์ผ ์ฝ๊ธฐ ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ด„์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Go ์–ธ์–ด, Vue3 ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๊ธฐํƒ€ ๊ณ ๊ธ‰ ๊ธฐ์ˆ ๋กœ ๊ตฌ๋™๋˜๋Š” AppMaster ์˜ ํ”Œ๋žซํผ์€ 30์ดˆ ์ด๋‚ด์— ์ƒ์„ฑ, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์—์„œ ๋‹๋ณด์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” Postgresql ํ˜ธํ™˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”Œ๋žซํผ์˜ no-code ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค, REST API ๋ฐ WSS endpoints ์‹œ๊ฐ์ ์œผ๋กœ ๋””์ž์ธํ•˜๊ณ  ์ตœ์†Œํ•œ์˜ ๋…ธ๋ ฅ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Promise ๊ตฌ์„ฑ์€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ํšจ์œจ์ ์ด๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•˜๊ณ  ์ค‘์ฒฉ๋œ ์ œ์–ด ํ๋ฆ„์˜ ์ฒ˜๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๋ณด๋‹ค ์ƒ์‚ฐ์ ์ด๊ณ  ๊ฐ„์†Œํ™”๋œ ๊ฐœ๋ฐœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. Promise ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ์™€ Go, Vue3, TypeScript์™€ ๊ฐ™์€ ์–ธ์–ด๋ฅผ ํ†ตํ•ฉํ•จ์œผ๋กœ์จ AppMaster ํ”Œ๋žซํผ์€ ๊ณ ๊ฐ์—๊ฒŒ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜์—ฌ ์ตœ์†Œํ•œ์˜ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋กœ ๊ฐ•๋ ฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.