<๊ฐ์>
์ง๊ธ๊น์ง๋ ์ด๋ฏธ์ง ๋ฆฌ์คํธ์ ์จ๋ฒ ๋ฆฌ์คํธ๋ฅผ ์ํ๋ณ์์๋ง ์ ์ฅํ๊ณ ์ฌ์ฉํ๋ค.
๊ทธ๋์ ์ฑ์ ๊ป๋ค ํค๋ฉด ์ํ ๋ณ์์ ์ ์ฅํด๋์ ๋ฆฌ์คํธ๋ค์ด ๋ค ๋ ์๊ฐ๋ค.
์ํ๋ณ์์ ๋ฃ์ ๊ฐ์ ์ฑ์ ์ข ๋ฃํ ์ ์ ๋ถ ์ญ์ ๋์ด ์ด๊ธฐํ ๋จ์ผ๋ก,
์ฑ์ ์ข ๋ฃํด๋ ์ญ์ ๋์ง ์๋ DB์ ํด๋น ๊ฐ๋ค์ ๋ฃ์ด๋๊ณ , ์ฑ์ ์์ํ ๋ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํตํด ํด๋น ๊ฐ๋ค์ ๋ถ๋ฌ์ค๋ ์์ ์ด ํ์ํ๋ค.
1. ๋ก์ง
2. ์ฝ๋๋ฆฌ๋ทฐ
DB์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ฐ ํ์ํ ํค ๊ฐ์ ๋ฐ๋ก ๊ด๋ฆฌํ๋ค.
๋ฌผ๋ก "images", "albums"๋ก ์ธ ์๋ ์์ง๋ง, ์คํ ์ณ์ setItem์ ๋ค๋ฅธ ๊ฑธ๋ก ํด๋ฒ๋ฆฌ๋ ์๊ฐ ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ฑํ๋ฐ ๋ค์ด๊ฐ์ ๋ชป ์ฐพ์ ์ ์๋ค. ํด๋น ๊ฒฝ์ฐ์ฒ๋ผ ๊ฐ์ฒด๋ก ์ฒ๋ฆฌํ๋ฉด ํธ์ถ ์ ์ ํ๊ธฐ๋ฒ์ด ์ํ๋ Key ๊ฐ์ ์๋์์ฑ์ผ๋ก ์จ์ฃผ๊ธฐ ๋๋ฌธ์, ์คํ ๋ด๋ ๊ฒฝ์ฐ์ ์๊ฐ ์ค์ด๋ค์ด ํจ์ฌ ์์ ํ๋ค.
์์ Key ๊ฐ์ด String ํํ์ธ ๊ฒ์ ๋ณด์๋ค. AsyncStroage์ ์ ์ฅ๋๋ ๊ฐ๋ค์ key, Value ๋ ๋ค String ๊ฐ์ด์ด์ผ ํ๋ค. ์์ ์ ์ ์ฅ๋๋ ๊ฐ๋ค์ด ํญ์ ๋ชจ๋ String์ธ ๊ฒ์ ๋ ์ฌ๋ฆฌ์.
AsyncStroage์ ์ ์ฅ๋ ๊ฐ์ ํํ๋ฅผ ์ฝ์๋ก ์ฐ์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
ํด๋น ๋ฐฐ์ด์ Async_Storage์ "images"๋ key๊ฐ์ ๋์ํ๋ Value ์ด๋ค. ์ฌ๊ธฐ์ ์ด๋ฏธ์ง ๊ฐ์ฒด๋ฅผ ํ๋ ์ ์ฅํ๊ณ , ๊ทธ๊ฑธ getItem์ผ๋ก ๋ถ๋ฌ์์ ์ฝ์๋ก ์ฐ์ด๋ณด์๋ค.
๋ณด๋ฉด, ๊ฐ์ฒด ์ ์ฒด๊ฐ ํต์ง๋ก "" ์ฒ๋ฆฌ ๋ ๊ฒ์ด ์๋๋ผ, ๊ทธ ์์ Key, Value ํ๋ํ๋๊ฐ String ์ฒ๋ฆฌ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ์ stringify๋ผ๊ณ ํ๋ค.
AsyncStorage์ setItem์ผ๋ก ๋ฃ์ ๋๋ (๋ฌด์จkey์ ๋ฃ์๋?. ๋ฃ์ value ๊ฐ์ด ๋ญ๋ฐ?) ๋ผ๋ 2๊ฐ์ง ์ธ์๋ฅผ ์ถฉ์กฑ์์ผ์ ๊ธฐ์ ํด์ค์ผ ํ๋ค.
์ด๋ ๋ฃ๋ Value ๊ฐ์ ์์ ๊ฐ์ด stringify ํํ๋ก ๋์ด์์ด์ผ ํ๊ณ , ์ด๋ ๊ฒ ๋ณํํด์ฃผ๋ JSON์ ํจ์๋ฅผ stringify๋ผ๊ณ ํ๋ค.
JSON์ JavaScriptObjecyNotation์ ์ฝ์๋ก์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ฐ๋ฆฌ๋ ์์ ํจ์๋ค๋ก pickImage,deleteImage, addAlbum, deleteAlbum์ ์์ ํ๋ค.
ํด๋น 4๊ฐ์ง ํจ์๋ ์๋ ์ํ๋ณ์ ๊ฐ๋ง ์๋ก์ด ๋ฐฐ์ด๋ก ์ด๊ธฐํ ์์ผ์ฃผ๋ ๋ก์ง์ด์ง๋ง, ์์ _setImages ํน์ _setAlbums๋ฅผ ์ถ๊ฐํจ์ผ๋ก์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ๋ฐฐ์ด๋ก ์ด๊ธฐํ ์์ผ์ฃผ๋ ๊ธฐ๋ฅ๋ ํ ์ ์๊ฒ ๋๋ค.
์์ ์ฝ๋๋ ์ ์ฅ๊ณ ์ ์ ์ฅ๋ ๋ด์ฉ์ ๊ฐ์ ธ์ค๋ ์ฝ๋์ด๋ค.
async์ await์ ๋ํ ์ค๋ช ์ 3๋ฒ์์ ํ๊ฒ ๋ค. ์ฌ๊ธฐ์๋
์ด๋ค ๋ณ์์ getItem์ ํตํด ํน์ key ์ ์ฅ๋ ๋ฐ์ดํฐ ๋ฐฐ์ด์ ๊ฐ์ ธ์จ๋ค.
๊ทผ๋ฐ ํด๋น ๋ฐ์ดํฐ ๋ฐฐ์ด์ stringifyํ ๋์ด ์์ผ๋๊น, ๋ค์ ์๋ ๊ฐ์ฒด ํํ๋ก ๋ฐ๊พธ๋ ์์ ์ ์งํํ๋ค.
์ด๊ฒ์ด parse ์ด๋ค.
(parse์ stringify๋ ๊ฐ ์ด์ธ์ ๊ฐ์ ๋ฃ์ผ๋ฉด ์๋ฌ๊ฐ ๋๋ค.)
parse๊ฐ ๋๋๋ฉด ํด๋น ๋ฐ์ดํฐ๋ ์์ ํ JS์์ ์ธ ์ ์๋ ํํ๋ก ๋ค์ ๋ฐ๋๋ค.
parse๊ฐ ๋๋ ๋ฐ์ดํฐ ๋ฐฐ์ด๋ก ์ด๋ฏธ์ง๋ ์จ๋ฒ์ ์ํ๋ณ์๋ฅผ ์ต์ ํ ํ๋ค.
3. ์๋กญ๊ฒ ์๊ฒ ๋ ๊ฒ
async์ await์ ๋ํด ์ค๋ช ํ๋ ค๋ฉด ๋จผ์ ๋๊ธฐ/ ๋น๋๊ธฐ์ ๋ป์ ๋ํด์ ์์์ผ ํ๋ค.
(1) ๋๊ธฐ/ ๋น๋๊ธฐ
<์ฐธ์กฐ>
์๋ฐ์คํฌ๋ฆฝํธ - ๋์ ์๋ฆฌ :: ํ๊ธฐ์ ๊ฐ๋ฐ Blog (tistory.com)
a. ๋๊ธฐ
๋๊ธฐ๋ ํ๋ฒ์ ํ ๊ฐ์ง ์ผ๋ง ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค.
๋ง์ฝ A => B => C๋ก ์ผ์ ์ฒ๋ฆฌํ๊ธฐ๋ก ํ์๋๋ฐ, B์์ ์ผ์ด ์ง์ ์ด ์๋คํ๋๋ผ๋, C๋ B๊ฐ ๋๋ ๋๊น์ง ๋ฌดํ์ ์ผ๋ก ๊ธฐ๋ค๋ฆฐ๋ค.
๋งฅ๋๋ ๋ ํค์ค์คํฌ ์์ ์ฌ๋๋ค์ด ๊ธธ๊ฒ ๋์ด์ ์ค์ ์๊ฐํ๋ฉด ๋ ๊ฒ์ด๋ค. ์ด๋ค ์ฌ๋์ด ํค์ค์คํฌ ์ด์ฉ์ด ์ํด๋ฌ ์ฃผ๋ฌธ์ด ๊ธธ์ด์ง๋ฉด, ๋ค์ ์๋ ์ฌ๋๋ค์ ์ฃผ๋ฌธ์ ํ์ง ๋ชปํ ์ฑ ๊ธฐ๋ค๋ ค์ผํ๋ค.
์๋ฐ ์คํฌ๋ฆฝํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ธฐ ์ธ์ด์ด๋ค.
๋๊ธฐ์ ์ผ๋ก ์ฝ๋๊ฐ ์คํ๋๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
b. ๋น๋๊ธฐ
๋น๋๊ธฐ๋, ํ๋์ ์ผ์ด ์ฒ๋ฆฌ๋๊ณ ์๋ ์์ค์ ๋ค๋ฅธ ์ผ์ด ์ฒ๋ฆฌ๋๋ ๊ฒ์ ๋งํ๋ค. (๋์์ฑ)
๋น๋๊ธฐ๋ ์ฝ๋ ์คํ์ ์์ด์ ํ์์ ์ด๋ค. ์นํ์ด์ง๊ฐ ์ด๋ค ๋์์ ์คํํ๋๋ฐ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆฐ๋ค๊ณ ์๊ฐํด๋ณด์. ๊ทธ ๊ณผ์ ๋์ ์น ํ์ด์ง๊ฐ ๋ก๋ฉ ํ์๋ง ๋จ๊ณ ์ด๋ ํ ์ผ๋ ํ์ง ๋ชปํ๋ค๋ฉด? ์ฌ์ฉ์๋ค์ด ๋ค ๋ ๋๊ฐ ๊ฒ์ด๋ค.
์ด๋ค ๋์์ ์คํํ๋ ์์ค์๋ ์น ํ์ด์ง ๋ด ๋ค๋ฅธ ์ด๋ค์ ํ ์ ์๊ฒ ๋ง๋ค์ด์ผ ํ๋ค.
๋น๋๊ธฐ ํจ์๊ฐ ์ฝ๋ ๋ด์ ๋ผ์ด ์์ ๋ ์ฝ๋๊ฐ ์คํ๋๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
(2) async , await๋?
async๋ keyword๋ ํจ์ ๋งจ ์์ ๋ถ๊ณ , ํด๋น ํจ์๊ฐ ๋น๋๊ธฐ ์คํ์ด ํ์ํ ๋ถ๋ถ์ ๊ฐ์ง๊ณ ์๋ค๋ ํํ์ด๋ค.
await๋ async ํจ์ ๋ด์์ ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ ๋ถ๋ถ ์์ ๋ถ์ด๋ keyword ์ด๋ค.
await๋ ๋ค์ ๋น๋๊ธฐ ์คํ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ํด๋น ์คํ ๊ฒฐ๊ณผ๊ฐ fullfield (์ฑ๊ณต)์ด๋ฉด, ํด๋น ์คํ์ ๊ฒฐ๊ณผ๋ฅผ return ํ๋ keyword์ด๋ค.
await๋ฅผ ๋ง๋๋ฉด ํด๋น ๋น๋๊ธฐ ์คํ์ด ๋๋ ๋ ๊น์ง ํจ์ ์คํ์ด ์ค๋จ๋๋ค. ๊ทธ๋ฆฌ๊ณ await ๋ค์ ๋น๋๊ธฐ ์คํ์ด ๋๋์ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ ๋ค์์์ผ ํจ์ ์คํ์ด ๋ค์ ์งํ๋๋ค.
ํจ์ ์คํ์ด ์ค๋จ๋ ์ฌ์ด์ ์์ง์ ๋ค๋ฅธ ์ผ์ ํ ์ ์๋ค.