๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋งฅ๋ฝ์์ 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 ํ๋ซํผ์ ๊ณ ๊ฐ์๊ฒ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ๋ค์ํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์ต์ํ์ ๊ธฐ์ ๋ถ์ฑ๋ก ๊ฐ๋ ฅํ ์ํํธ์จ์ด ์๋ฃจ์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ํฉ๋๋ค.