๊ฒฐ์ ๋ฅผ ์๋ฃํ๊ณ ๋ฐฑ์๋๋ก API ์์ฒญ์ ๋ณด๋ผ ๋ ๊ฒฐ์ ๊ฐ ์ด๋ฃจ์ด์ง ์์ ์ ์๊ฐ์ DB์ ํจ๊ป ์ ์ฅํ๊ฒ ๋๋ค. ์ด๋, ์๊ฐ์ ์๋ก ์์ฑํ๋ ์์ ์ ํ๋ก ํธ์๋ ์๋ฒ์์ ํ๋ฉด ์ ๋๋ค.
์ ๊ทธ๋ฆผ์ฒ๋ผ ์ฌ์ฉ์๊ฐ PC์ ์๊ฐ์ ์ค์ ์ ๋ค๋ฅด๊ฒ ์กฐ์ํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ํ๋ก ํธ์๋ ์๋ฒ์์ ์์ฑํ ์๊ฐ๋ ์กฐ์๋ ์๊ฐ์ ๋ฐ๋ผ๊ฐ๋ค. ๋ฐ๋ผ์ ์๊ฐ์ ์์ฑํ๋ ์์ ์ ๋ฐฑ์๋์์ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
๊ธ๋ก๋ฒ ์๋น์ค์ ๊ฒฝ์ฐ๋ ์ด๋จ๊น? ๋ฐฑ์๋์์ UTC(์ธ๊ณํ์ค์๊ฐ)
๊ธฐ์ค์ผ๋ก ์๊ฐ์ ์์ฑํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์ UTC ์๊ฐ์ผ๋ก ์ ์ฅ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฑ์๋์์ ์๋ต์ ๋ฐ์์ฌ ๋์๋ ๋ฐ์์จ UTC ์๊ฐ์ ํด๋น ๋๋ผ์ ์๊ฐ์ผ๋ก ํ์ฐํด์ ๋ณด์ฌ์ฃผ๊ฒ ๋๋ค.
์ด๋ฌํ ์๊ฐ ๊ด๋ จ ์ฒ๋ฆฌ๋ฅผ ๋์์ฃผ๋ ๋ํ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค!
moment.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ฌ์ฉ์์ ํ๋(ํด๋ฆญ, ํ์ดํ ๋ฑ)
- ํน์ ์๊ฐ์ ๋๋ฌ -> ํฌ๋ก ํญ
ํฌ๋ก ํญ
์ ์ด์ฉํ๋ฉด ๊ด๋ฆฌ์๊ฐ ์ ํด์ง ์๊ฐ๊น์ง ๋๊ธฐํ๊ฑฐ๋, ๊ทธ ์๊ฐ์ ํด๋ฆญ ๋ฑ์ ์ด๋ฒคํธ๋ฅผ ์ง์ ๋ฐ์์ํฌ ํ์๊ฐ ์์ด์ง๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<title>์ด๋ฒคํธ๋ฃจํ</title>
<script>
const onClickLoop = () => {
console.log("์์!");
setTimeout(() => {
console.log("0์ด ๋ค์ ์คํ๋ ๊ฑฐ์์!");
}, 0);
let sum = 0;
for (let i = 0; i <= 9000000000; i++) {
sum += 1;
}
console.log("๋!");
};
</script>
</head>
<body>
<button onclick="onClickLoop()">์์ํ๊ธฐ</button>
</body>
</html>
์ ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด ์ฝ์์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ค.
์ฝ๋ ์์๋๋ก๋ผ๋ฉด '๋!' ์ฝ์๋ณด๋ค '0์ด ๋ค์ ์คํ๋ ๊ฑฐ์์!'๊ฐ ๋จผ์ ๋ ์ผ ํ๋๋ฐ ์์๊ฐ ๋ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ ์๋ฆฌ ๋๋ฌธ์ด๋ค. ์์์ ์คํ์์ผฐ๋ ์ฝ๋์ ์คํ ์์๋ฅผ ์์ธํ๊ฒ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- callStack์์ onClickLoop ํจ์ ์คํ(Stack - Last In First Out / LIFO ๊ตฌ์กฐ)
- Background์ setTimeout()์ ๋ณด๋ด์ ์คํ
- setTimeout()์ด TaskQueue๋ก ์ ๋ฌ๋์ด ์์ (Queue - First In First Out / FIFO ๊ตฌ์กฐ)
- TaskQueue์ ์์ด๋ ํจ์๋ CallStack์ด ๋ค ๋น์์ง ๋ค์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์คํ๋จ
์ฌ๊ธฐ์ TaskQueue์ ์๋ ํจ์๋ฅผ CallStack์ผ๋ก ๋ณด๋ด๋ ์ญํ ์ ํ๋ ๊ฒ์ด ์ค๋ ๋(Thread)
๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ค๋ ๋
๋ฐฉ์์ ๊ฐ๊ณ ์๋ค. ์ฑ๊ธ ์ค๋ ๋๋ CallStack์ด ๋น์ด์ผ๋ง TaskQueue์ ์๋ ์์
์ CallStack์ผ๋ก ๊ฐ์ ธ์จ๋ค.
์ฑ๊ธ ์ค๋ ๋์ ๋ฉํฐ์ค๋ ๋
์ ์ฐจ์ด๋ ์ค๋ ๋(์ผ๊พผ)๊ฐ ํ๋๋, ์ฌ๋ฟ์ด๋์ ์ฐจ์ด๋ค. ๋ฉํฐ์ค๋ ๋๋ ๋์์ ์ผ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฟ์ด์ ๋๋ ์ ํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
๋ํ ๋ฉํฐ์ค๋ ๋
๋ ์ฑ๊ธ์ค๋ ๋๋ณด๋ค ์๋๊ฐ ๋๋ฆด ์ ์๋ค. ํ๋ ์ผ์ ์ค๋จํ๊ณ ์ ์ฅํ๊ณ ๋ค์ ์ค๋ ๋๋ก ๋๊ฒจ์ฃผ๋(์ปจํ
์คํธ ์ค์์นญ) ์๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฉํฐ์ค๋ ๋ ์ธ์ด๋ก๋ ์๋ฐ, ํ์ด์ฌ ๋ฑ์ด ์๋ค.
๋ ์ค ๋ญ๊ฐ ๋ ์ข๋ค๊ณ ํ ์๋ ์๋ค. ์ฅ๋จ์ ์ ๋น๊ตํด์ ๋ง๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.