December 22, 2020
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ฐ๋ ๋ ์ธ๋ฐ ๋น๋๊ธฐ๋ฅผ ํตํด์ ๋ค๋ฅธ ์ผ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์๋ค ๊ณ ํ๋ค.
๋น๋๊ธฐ๋ฅผ ์์จ์?
๋น๋๊ธฐ ์ ์ธ ์์ ์์๋ api ์์ ์์๊ฐ ๋๋ค์ด๋ผ 1- 2- 3 ์์๋๋ก ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํจ์ด๋ค?
์์๋๋ก ์๋ ํ๋ค๋ ๋ณด์ฅ์ ๋ฐ๊ธฐ ์ํด์๋ผ๊ณ ํ๋ค.
์นดํ์์ ์ค์์๋ ๊ทธ๋ฆผ์ ๋ ์ฌ๋ ค๋ณด์.
๋ธ๋กํน - ๋ง๋ฅ ๋๊ธฐํด์ผ ํ๋ ์ํฉ. ์ ์ฌ๋ ์ฃผ๋ฌธํ๊ณ ๋ฐ์ ๋๊น์ง ์ฃผ๋ฌธ๋ ๋ชป๋ฃ์ด.
ํฌํ ์ต pop-up error : adobe xxxx is not responding
๋ธ๋กํน์ ์์์ด๋ค.
๋ ผ๋ธ๋กํน - ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๊ฒ ๋๊ณ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์๋ ๊ฒ.
JS ์ํ๊ณ ์์๋ ๋๊ธฐ๊ฐ ๋ธ๋กํน์ด๊ณ ๋น๋๊ธฐ๊ฐ ๋ ผ๋ธ๋กํน๊ณผ ๋๊ฐ๋ค ๋ณด๋ฉด ๋๋ค๊ณ ํ๋ค.
์ฑ์ ํ์ผ ์ ๋ก๋ ํ๋ ์ฐฝ (์ฌ๊ธฐ์ ํ์ผ drop), ๊ทธ๋ฆฌ๊ณ ์ ๋ก๋ ๋ฒํผ์ ์์ฑํ๋ค๊ณ ๊ฐ์ ํ์.
ํ์ผ ์ ์ถ๋ ฅ, ํ์๋ผ์ธ ์ ๋๋ฉ์ด์ , ๋คํธ์ํฌ ์์ฒญ์ ํ๊บผ๋ฒ์ ์ผ์ด๋๋ ๊ฒ์ด ์๋๋ค.
์์์ ๋ฐ๋ผ ์์๋ฅผ ์ ์ด ํ๊ธฐ ์ํด์ ์ฝ๋ฐฑ ์ ์ฌ์ฉํด ๋ณธ๋ค.
importFile(result => {
doAnimation(progress => {
uploadFile(result => {})
})
})
์์๋ก ์์ฑํ ์ฝ๋ ์ด์ง๋ง ๋ง์ฝ ๋น๋๊ธฐ ์ ์ธ task ๋ค์ด ์์ ์ธ ์ข ๋ฅ๊ฐ ์๋๋ผ ๋ ๋ง๋ค๋ฉด ์ฝ๋ฐฑ ์ง์ฅ์ (์ค์ฒฉ๋ ์ฝ๋ฐฑ) ๊ฒฝํํ๊ฒ ๋ ๊ฒ์ด๋ค.
์ผ์ชฝ์ ๋ณ๋ ฌ ๊ตฌ์กฐ๊ฐ ์๋๋ค. Promise๋ฅผ ๋ฆฌํดํ๋ ๋น๋๊ธฐ ํจ์๋ค์ด ์๋ก ๋ ๋ฆฝ์ ์ด์ง ์์๋ ์ฌ์ฉํ๋ค.
์ค๋ฅธ์ชฝ์ Promise.all ์ ์ฌ์ฉํ consumer ํจ์ ๋ด์ ๋น๋๊ธฐ ํจ์๋ค์ ๋ณ๋ ฌ ๊ตฌ์กฐ์ด๋ค. ์ด๊ฒ์ ๋น๋๊ธฐ ํจ์๋ค์ด ์๋ก ๋ ๋ฆฝ์ ์ผ ๋ ์ฌ์ฉํ๋ค.
์ธ์ Promise.all ์ ์จ์ผ ํ ์ง, then ์ ์จ์ ์ด์ด๊ฐ์ผ ํ ์ง ์์์ผ ํ๋ค.
await ์ฌ๋ฌ๊ฐ ๊ฐ ๋ถ์ ํจ์๋ฅผ ๋์์ ์ฒ๋ฆฌํ๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ์ ๋ค์ promise.all ๋ก ๋ฌถ์ด์ฃผ๋ฉด ๋๋ค.
async await ์ ์์ฒญ์ ๋ํ ์๋ฌ๋ฅผ ์ก์ ๋๋ try - catch ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๊ณ ,
ํ๋ก๋ฏธ์ค ์์๋ .catch ๋ก ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ค.
setTimeout ์ ๋ฆฌํด์ ํ๋ก๋ฏธ์ค๊ฐ ์๋๋ค.
await setTimeout(() => console.log('ํ๋ก๋ฏธ์ค'), 1000)
๋ ์๋ชป๋ ์ฝ๋๋ผ๋ ๋ป์ด๋ค.
๋ฐ๋์ promise ๋ก ๊ฐ์ธ์ค์ผ ํ๋ค.
๋น๋๊ธฐ ํจ์๋ผ๊ณ ๋ง await ๊ฐ๋ค ์ด๋ค๊ณ ๋๊ธฐ์ ์ผ๋ก ์ธ ์ ์๋๊ฒ ์๋๋ผ๋ ๊ฑฐ๋ค.
Fullfilled / Pending / Rejected
Fullfilled ์ํ ์ผ ๋ ์ด์ resolve ๋ก ์ฑ๊ณตํ ๋น๋๊ธฐ ์์ฒญ์ .then ์ผ๋ก ๋ฐ์์์ ๋ฐํ
Rejected ์ํ ์ผ ๋ ์ด์ rejected ๋ก ์คํจํ ๋น๋๊ธฐ ์๋ฌ๋ฅผ .catch ๋ก ๋ฐ์์์ ๋ฐํ
์๋ ์๋ฆฌ๋ ๋ค๋ฅด๋ค. ์์๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
๋ฐฐ์ด ์ธ์ ์ ํ๋ก๋ฏธ์ค ๊ฐ์ฒด๊ฐ ๋๋ค fullfilled ์ํ์ผ ๋๋ง then ์ผ๋ก ๋ถ๋ฆฌ๊ฒ ๋๋ค.
ํ๋๋ผ๋ rejected ๋๋ฉด catch ๋ก ๋์ด๊ฐ๊ฒ ๋๋ค.
๋ํ Promise.all ์ด ๋ฆฌํดํ๋ ๊ฒ์ ๋ฐฐ์ด์ด ์๋๋ผ ํ๋ก๋ฏธ์ค ๊ฐ์ฒด ์ด๋ค.
์๋ ๋ ์ค ํ๋๋ผ๋ fullfilled ๋๋ฉด then ์ด ๋ถ๋ฆฌ๊ฒ ๋๋ค.
node.js - ํ์ผ์ ์ฝ๊ณ ์ฐ๋๊ฒ์ ๋ค๋ฃฐ ์ ์๋ค. ์๋ฒ๋ฅผ ๋ง๋ค๊ณ , db ๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ ํ๊ฒฝ
๋ธ๋ผ์ฐ์ - ํ์ผ ๋ค๋ฃจ๋ ๊ฑฐ์๋ ํ๊ณ๊ฐ ์๋ค.
fetch ๋ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ๋ api ์ด๋ค.
๊ทธ๋ผ node ์์๋ ๋คํธ์ํฌ ์์ฒญ์ ๋ชปํ๋์?
ํ ์ ์๋ค. node.js ์์ ๋ชจ๋์ ์ฐพ์๋ณด๋ฉด http ๋ฅผ ์ฌ์ฉ ํ ์ ์๋ค.
ํน์ node-fetch ๊ฐ์ ๋ชจ๋์ ์ธ์คํจํด ์ฌ์ฉํ ์ ์๋ค. node ์ ๋ธ๋ผ์ฐ์ ๋ ์๋ก ํ๊ฒฝ์ด ๋ค๋ฅด๋ค ๋ผ๋ ๊ฒ์ ์ธ์ํ ์ ์์ด์ผ ํ๋ค.