๋ฐ์ํ
๐ ์ค๋ ํ ๊ฒ
โ๏ธ toy - ์ค๋์ฟ
์ค๋์ฟ ๋ต์ ๊ตฌํ๋ ๋ฌธ์ ๋ฅผ ํ์๋๋ฐ ์ญ๋๊ธ ์ค๋์ก๊ณ ์๋ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค. ๊ธฐ๋ณธ์ ์ธ ์์ด๋์ด๋ boolean๊ฐ๋ค์ 9๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์ฒดํฌ์ฉ ๋ฐฐ์ด์ ๋ฃ์ด๋๊ณ , ํด๋น ์ซ์๊ฐ ์กด์ฌํ๋ ์ด/ํ/3*3 ์์ญ์ ์๋ ๋ชจ๋ ์ซ์๋ค์ ๋ฐฐ์ด์์ false๋ก ๋ฐ๊ฟ์ฃผ๊ณ , true์ธ ์ธ๋ฑ์ค๊ฐ๋ง ํ๋์ฉ ๋ฃ์ด๋ณด๋ฉฐ ํ์ธํ๋ ๊ฒ์ด์๋ค. ์ํธ์ฆ๋ ๋น์ทํ๊ฒ ์ ๊ทผํ๋ ๊ฒ ๊ฐ์๋ฐ, ์์ง ์ฌ๊ทํจ์๋ฅผ ์ฐ๋ฉด์ ํ์ถ์กฐ๊ฑด์ ์์ฑํ๋๊ฒ ๋ฏธ์ํ ๊ฒ ๊ฐ๋ค๊ณ ๋๊ปด์ก๋ค.
โ๏ธ Event Loop
์๋ฐ์คํฌ๋ฆฝํธ์ ํฐ ํน์ง ์ค ํ๋๋ '์ฑ๊ธ์์ค๋ ๋' ๊ธฐ๋ฐ์ ์ธ์ด๋ผ๋ ์ ์ด๋ค. ํธ์ถ๋ ์คํ์ด ํ๋๋ผ, ๋์์ ํ๋์ ์์ ๋ง์ ์ฒ๋ฆฌํ ์ ์๋ค๋ผ๋ ๋ง์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋์ํ๋๊ฑธ ๋ณด๋ฉด ์ฌ๋ฌ ์์ ์ด ๋์์ ์ฒ๋ฆฌ๋๊ธฐ๋ ํ๋ค๋ ๊ฑธ ๋ณผ ์ ์๋ค.ํ์ด๋ฐ '๋์์ฑ'์ ์ดํดํ๊ธฐ ์ํด Event Loop์ ๋ํด ๋ฐฐ์ ๋ค. setTimeout, XMLHTTPRequest.. ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ด ์๋๋ผ ์ธ๋ถ์ ๊ตฌํ๋ webAPI ์์ญ์ ์กด์ฌํ๋ค. ์ด๊ฒ๋ค์ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ํตํด ์คํ๋๋ค. ์ด๋ฒคํธ ๋ฃจํ๋ ์คํ์ด ๋น์์ ๋, task queue์ ์ฒซ๋ฒ์งธ ์ฝ๋ฐฑ์ ์คํ์ ์๊ณ ์คํ์ํจ๋ค.'ํ์ฌ ์คํ์ค์ธ ํ์คํฌ๊ฐ ์๋์ง' ๊ทธ๋ฆฌ๊ณ 'ํ์คํฌ ํ์ ํ์คํฌ๊ฐ ์๋์ง'๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํ์ธํ๋ ๊ฒ์ด๋ค. ๋๋ถ์ ์คํ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฝ๋๋ฅผ ์ ์ ํ ๋ถ๋ฐฐํ๋ ๋ฑ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์๋์ํฌ ์ ์๊ฒ ๋์๋ค๋๊ฑธ ์๊ฒ๋์๋ค. ์ธ์
โ๏ธ Promise
Promise์ ๋ํด ์ง์ค์ ์ผ๋ก ํ๊ณ ๋ค์ด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค. ํนํ then, catch, finally ๊ฐ์ ํ์์ฒ๋ฆฌ ๋ฉ์๋๋ค์ด ๊ฐ๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฐ์ ์ธ์๋ก ๋ฐ์ ๋ฌด์์ ๋ฆฌํดํ๋์ง, ๊ฐ ๋ฉ์๋์ ์ํฅ์ ๋ํด mdn๋ฌธ์๋ฅผ ๋ณด๊ณ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด ์คํ์์ผ๋ณด๋ฉฐ ์์๋ณด์๋ค. ๋ค๋ฅธ ๋ฉ์๋๋ค์ ์์๋๋ก ๋์ํ๋๋ฐ finally์ ๋์์ด ์์ ๋ฐ์ด์๋ค. finally๋ ์ด๋ฆ๋๋ฌธ์ธ์ง ๊ฐ์ฅ ๋ง์ง๋ง์๋ง ์จ์ผํ ๊ฒ ๊ฐ์๋๋ฐ, ์ค๊ฐ์ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํ ์๋ ์๊ณ ์ธ์๋ฅผ ๋ฐ์ง ์๊ณ ๋ฆฌํด๋ ํ์ง ์๋๋ฐ ๋ง์น ํฐ๋์ฒ๋ผ ์ด์ ํจ์์ ๋ฆฌํด๊ฐ์ ๋ค์ ํจ์๋ก ๋๊ฒจ์ฃผ๋ฏ์ด ๋์ํ๋ค.
then์ ๋ฆฌํด๊ฐ์ ๋ถ๋ช ํ๋ก๋ฏธ์ค ๊ฐ์ฒด์ผํ ๋ฐ ์ผ๋ฐ์ ์ธ ๊ฐ์ ์ป์ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ฌ์, ํ๋ก๋ฏธ์ค ๊ฐ์ฒด๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๊ณ ์๋๋๋์ง ๊ถ๊ธํด์ ธ์ ECMA ๋ช ์ธ์๋ฅผ ๋ค์ ธ๋ณด๊ธฐ๋ ํ๋ค. ์ผ๋จ ๋ช ์ธ์์ ์ฝ์์ฐฝ์์ ํ์ธํ ์ ์๋ฏ์ด [[PromiseState]]๋ผ๋ ์์ฑ์ ๊ฐ์๋ ํ๋ก๋ฏธ์ค์ ์ํ๊ฐ(fulfilled, rejected...), [[PromiseResult]] ์์ฑ์ ๊ฐ์๋ resolve๋ reject ์์ ์๋ ๊ฐ์ด ์๋ ๊ฒ์ ๋ณผ ์ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์์ฑ์ ๊ฐ์ ๊บผ๋ด๋ ค๋ฉด then์ด๋ await๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋๋ฐ, await์ ์ฐ๋๊ฒ์ด ๋ ์์ ํ๋ค๊ณ ํ๋ค.
๐ ๊ธฐ์ตํ ๊ฒ
โ๏ธ then์ด ๋ฐํํ ํ๋ก๋ฏธ์ค (์ผ : ๋งค๊ฐ๋ณ์, ์ค : ๋ฆฌํด๊ฐ)
ํจ์๊ฐ ๋ฆฌํดํ ๊ฐ : ๊ฐ์ ๊ทธ๋๋ก ๋ฐํ
๊ฐX : undefined ๋ฐํ
์ค๋ฅ ๋ฐ์ : ๊ทธ ์ค๋ฅ๋ฅผ ๋ฐํ + ๊ฑฐ๋ถ
fulfilled ํ๋ก๋ฏธ์ค : ๊ทธ ํ๋ก๋ฏธ์ค ๊ฒฐ๊ณผ๊ฐ์ ์์ ์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์ดํ >> ๊ฐ๋ด ์๋ฃ
rejected ํ๋ก๋ฏธ์ค : ๊ทธ ํ๋ก๋ฏธ์ค์ ๊ฒฐ๊ณผ๊ฐ์ ์์ ์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๊ฑฐ๋ถ
pending ํ๋ก๋ฏธ์ค : ๊ทธ ํ๋ก๋ฏธ์ค์ ์ดํ ์ฌ๋ถ/๊ฒฐ๊ณผ๊ฐ์ ๋ฐ๋ฆ >> ๊ฐ๋ด ์
๐ ๋ ๊ณต๋ถํ ๊ฒ
โ๏ธ Web Architecture
โ๏ธ async, await ์ข๋ ์ดํด๋ณด๊ธฐ
โ๏ธ JSON๋ฌธ์๋ฅผ ํฌ๋กฌ์ฐฝ์์ ๋ณผ ๋ ์ฝ๊ฐ ๋์ด ์ํ ๋๋ฐ, JSONView๋ผ๋ ์ข์ ํฌ๋กฌ ํ์ฅํ๋ก๊ทธ๋จ์ด ์๋ค๊ณ ํด์ ๋ค์ด๋ฐ์๋ค. ์ถ์์ง์ด ๋์์ง๊ฒ๊ฐ๋ค..!
๋ฐ์ํ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
210204_TIL (0) | 2021.02.05 |
---|---|
210203_TIL (0) | 2021.02.04 |
210201_TIL (0) | 2021.02.02 |
210129_TIL (0) | 2021.01.30 |
210128_TIL (0) | 2021.01.29 |
๋๊ธ