...

์น์์์ ๋น๋๊ธฐ์ ๋๊ธฐ
์น ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ๋น๋๊ธฐ(Async)์ ๋๊ธฐ(Sync)๋ผ๋ ์ฉ์ด๋ฅผ ์์ฃผ ์ ํ๊ฒ ๋ ๊ฒ์ด๋ค. ์ด ๋ ์ฉ์ด๋ ์น์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ ์ค๋ช ํ๋๋ฐ ์ฌ์ฉ๋๋๋ฐ, ๋๊ธฐ(Sync)๋ ์์ฒญ๊ณผ ์๋ต์ด ๋์์ ์ผ์ด๋๋ค๋ ๋ป์ด๊ณ , ๋น๋๊ธฐ(Async)๋ ์์ฒญ๊ณผ ์๋ต์ด ๋์์ ์ผ์ด๋์ง ์๊ณ ๋์ค์ ์๋ตํ๋ ๊ฒ์ ๋งํ๋ค.

๊ทธ๋ ๋ค๋ฉด ์ ์น์์๋ ๋น๋๊ธฐ์ ๋๊ธฐ๋ผ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฑธ๊น? ๊ทธ๋ฆฌ๊ณ ์ด ๋ ๋ฐฉ์์ ์ด๋ค ์ฅ๋จ์ ์ด ์๊ณ , ์ด๋ค ์ํฉ์์ ์ ์ ํ๊ฒ ์ฌ์ฉํ ์ ์์๊น?
โ๋๊ธฐ (Sync)
๋๊ธฐ(Sync) ํต์ ์ ์นํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์ด๋ฒ ๋ฉ์ผ์์ ์ผ์ชฝ ์ฌ์ด๋๋ฐ์ ๋ณด๋ธ๋ฉ์ผํจ์์ ๋ฐ์๋ฉ์ผํจ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋ฉ์ผ ๋ฆฌ์คํธ ํ๋ฉด ์ ์ฒด๊ฐ ๋ค์ ๋ก๋ฉ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.

๋๊ธฐ(Sync) ํต์ ์ ๊ฐ์ฅ ๋ํ์ ์ธ ์์๊ฐ ํผ(Form) ์ ์ถ์ด๋ค. ํผ(Form)์ ์นํ์ด์ง์์ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ์๋ฒ์ ์ ์กํ๋ ์ญํ ํ๋๋ฐ, ํด๋ผ์ด์ธํธ์์ ํผ(Form)์ ์๋ฒ์ ์ ์ถํ๋ฉด ์๋ฒ๋ก๋ถํฐ ์๋ก์ด ์นํ์ด์ง๋ฅผ ๋ฐ์์ ํ๋ฉด์ ํ์ํ๊ฒ ๋๋ค.

์ด๋ ๊ฒ ์นํ์ด์ง์ ์ ์ฒด๋ฅผ ๊ฐฑ์ ํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ด ๋ฐ๋ก ๋๊ธฐ(Sync) ํต์ ์ด๋ค.
๋๊ธฐ ํต์ ์ ์ฅ์
- ๋๊ธฐ(Sync) ํต์ ์ ๋น๋๊ธฐ(Async) ํต์ ๋ณด๋ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ดํดํ๋ ๊ฒ์ด ์ฝ๋ค.
- ์์ฒญ๊ณผ ์๋ต์ด ์์ฐจ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ๊ณผ ์ง๊ด์ฑ์ ์ ์งํ ์ ์๋ค.
- ๋๊ธฐ(Sync) ํต์ ์ ์์ฒญ์ ๋ณด๋ธ ํ์ ์๋ต์ ๋ฐ์์ผ ๋ค์ ์์ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์์ฒญ๊ณผ ์๋ต์ ์์๋ฅผ ๋ณด์ฅํ ์ ์๋ค. ์๋ฅผ๋ค์ด A์ B๋ผ๋ ๋ ๊ฐ์ ์์ฒญ์ ๋ณด๋์ผ๋ฉด, ๋ฐ๋์ A์ ์๋ต์ด ๋จผ์ ๋์ฐฉํ๊ณ B์ ์๋ต์ด ๋์ค์ ๋์ฐฉํ๋ค.
- ๋๊ธฐ(Sync) ํต์ ์ ์์ฒญ๊ณผ ์๋ต์ด ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์, ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ์๋ฌ์ ๋ํ ์ฒ๋ฆฌ๊ฐ ์ฌ์ธ ์ ์๋ค

๋๊ธฐ ํต์ ์ ๋จ์
- ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์์ ํต์ ๋์ด ๋ง์์ง๊ณ , ์์๊ณผ ์๊ฐ์ด ๋ญ๋น๋ ์ ์์ด, ์นํ์ด์ง์ ์๋์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
- ๋ฐ๋ผ์ ํ๋ฉด์ด ๊น๋นก๊ฑฐ๋ฆฌ๊ฑฐ๋ ๋ฉ์ถ๋ ํ์์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ๋ถํธํจ์ ๋๊ปด ์ฌ์ฉ์ ๊ฒฝํ์ด ๋จ์ด์ง ์ ์๋ค.
- ์์ฒญ๊ณผ ์๋ต์ด ๋์์ ์ผ์ด๋์ผ ํ๊ธฐ ๋๋ฌธ์ ์์ฒญ์ ๋ณด๋ธ ํ์๋ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ค์ด๋ฒ ๋ฉ์ผ์์ ๋ฉ์ผ์ ๋ณด๋ด๋ ๋์ ๋ค๋ฅธ ๋ฉ์ผ์ ์ฝ๊ฑฐ๋ ์ธ ์ ์๋ค.
๋น๋๊ธฐ (Async)
๋น๋๊ธฐ(Async) ํต์ ์ ๋๊ธฐ(Sync)์ ๋ฐ๋๋ง๋ก, ์นํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ๋ ์นดํ์์ ๋๊ธ์ ์์ฑํ๊ณ ์์ฑ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ์ด์ง ์ ์ฒด๊ฐ ์ฌ๋ก๋ ๋์ง ์๊ณ ๋๊ธ ์์ญ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธ ๋์ด ๋๊ธ์ด ์ ์ฉ๋จ์ ๋ณผ ์ ์๋ค.

์ด๋ ๊ฒ ์นํ์ด์ง์ ์ผ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ด ๋ฐ๋ก ๋น๋๊ธฐ(Async) ํต์ ์ธ ๊ฒ์ด๋ค.
๋น๋๊ธฐ ํต์ ์ ์ฅ์
- ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ฉํ์ง ์๊ณ ํ์ํ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํ๊ธฐ ๋๋ฌธ์ ์นํ์ด์ง์ ์๋์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
- ์๋ฒ์์ ํต์ ๋์ด ์ค์ด๋ค๊ณ , ์์๊ณผ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค.
ํ๋ฉด์ด ๊น๋นก๊ฑฐ๋ฆฌ๊ฑฐ๋ ๋ฉ์ถ์ง ์๊ณ ๋ถ๋๋ฝ๊ฒ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ์ํฌ ์ ์๋ค. - ์์ฒญ๊ณผ ์๋ต์ด ๋์์ ์ผ์ด๋์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ์์ฒญ์ ๋ณด๋ธ ํ์ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ค.

๋น๋๊ธฐ ํต์ ์ ๋จ์
- ๋น๋๊ธฐ(Async) ํต์ ์ ๋๊ธฐ(Sync) ํต์ ๋ณด๋ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ดํดํ๋ ๊ฒ์ด ์ด๋ ค์ ์ฝ๋์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ ์ ์๋ค.
- ๋น๋๊ธฐ(Async) ํต์ ์ ์์ฒญ์ ๋ณด๋ธ ํ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค์ ์์ ์ ์ํํ๊ธฐ ๋๋ฌธ์, ์์ฒญ์ ์ฒ๋ฆฌ ์๋์ ๋ฐ๋ผ ์๋ต์ด ๋ค์ฃฝ๋ฐ์ฃฝ ๋ ์ ์์ด ์์ฒญ๊ณผ ์๋ต์ ์์๋ฅผ ๋ณด์ฅํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, A์ B๋ผ๋ ๋ ๊ฐ์ ์์ฒญ์ ๋ณด๋๋๋ฐ, B์ ์ฒ๋ฆฌ๊ฐ ๋ ๋นจ๋ผ์ B์ ์๋ต์ด ๋จผ์ ๋์ฐฉํ๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ค.
- ๋น๋๊ธฐ(Async) ํต์ ์ ์์ฒญ๊ณผ ์๋ต์ด ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์, ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ค ์์ฒญ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง ํ์ ํ๊ณ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ฝ์ง ์์ ์ ์๋ค.
์น์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ธฐ์ Ajax
์น์ ๋น๋๊ธฐ(Async) ํต์ ์ ๊ฐ์ฅ ๋ํ์ ์ธ ์์๊ฐ ๋ฐ๋ก AJAX(Asynchronous JavaScript And XML) ์ด๋ค. AJAX๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ์น ์๋ฒ์ ๋น๋๊ธฐ๋ก ํต์ ํ๊ณ , HTML, XML, JSON ๋ฑ์ ๋ค์ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค. AJAX๋ฅผ ์ฌ์ฉํ๋ฉด ์นํ์ด์ง๊ฐ ๋ก๋ฉ๋ ํ์๋ ์๋ฒ๋ก๋ถํฐ ํ์ํ ๋ฐ์ดํฐ๋ง ์์ฒญํ๊ณ ๋ฐ์์ ์นํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๊ฐฑ์ ํ ์ ์์ด, ์น ํ์ด์ง์ ์ผ๋ถ๋ถ๋ง์ ์ ๋ฐ์ดํธํ ์ ์์ผ๋ฏ๋ก, ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์์๋ ๋๊ณ , ์๋ฒ์ ๋ถํ๋ ์ค์ผ ์ ์์ต๋๋ค. ์์์ ๋ค์ด๋ฒ ๋๊ธ ์์คํ ์ ์์๋ก ๋ค์ด ๋น๋๊ธฐ๋ฅผ ์ค๋ช ํ๋๋ฐ ์ด๋ฅผ ๊ตฌํํ๋ ๊ธฐ์ ์ด Ajax ์ธ ๊ฒ์ด๋ค.

Ajax์ ๋์ ์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ์น ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ์์ ์์ฒญ์ด ๋ฐ์ํ๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ๋ก XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- XMLHttpRequest ๊ฐ์ฒด๋ ์๋ฒ์ ๋น๋๊ธฐ์ ์ผ๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ XML์ด๋ JSON ํ์์ผ๋ก ๋ณด๋ธ๋ค.
- XMLHttpRequest ๊ฐ์ฒด๋ ์๋ต์ ๋ฐ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ์น ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ํ๋ค.

์ด์ฒ๋ผ Ajax๋ ์น ๊ฐ๋ฐ์์ ๋ง์ด ์ฌ์ฉ๋๋ ๋น๋๊ธฐ ๊ธฐ์ ์ด๋ค. Ajax๋ฅผ ์ ์ดํดํ๊ณ ํ์ฉํ๋ฉด ๋ ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ค.
Ajax์ ์ฅ์
- ์น ํ์ด์ง์ ์๋์ ์ฌ์ฉ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
- ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์๋ค.
- ๋ค์ํ ๋ฐ์ดํฐ ํ์์ ์ง์ํ๋ค. (XML, JSON)
Ajax์ ๋จ์
- ๋ณด์ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ค.
- ํฌ๋ก์ค ๋๋ฉ์ธ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ค. (CORS)
- ๋ธ๋ผ์ฐ์ ์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ค. (IE ๋ธ๋ผ์ฐ์ )
๋น๋๊ธฐ์ ๋๊ธฐ ๊ฒฐ๋ก
์ด๋ ๊ฒ Sync(๋๊ธฐ์)๊ณผ Async(๋น๋๊ธฐ์์) ๋ช ํ์ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์๋น์ค ํน์ง์ ๋ฐ๋ผ ์ฒ๋ฆฌ๊ฒฐ๊ณผ๊ฒ ์ํด ์ฒ๋ฆฌํ์ฌ ์๋น์ค์ ์ง์ ๋์ผ ์ ์๋ Synchronous(๋๊ธฐ์) ๋ฐฉ๋ฒ๊ณผ, ์ฒ๋ฆฌ๊ฒฐ๊ณผ์ ์์กดํ์ง ์๊ณ ์ฑ๋ฅ์ ์ผ๋ก ๋น ๋ฅธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ASynchronous(๋น๋๊ธฐ์) ๋ฐฉ๋ฒ์ ์ ์ ์ฉ ํ๋๊ฒ ์ค์ํ๋ค.
์น ๊ฐ๋ฐ์ ํ ๋๋ ๋น๋๊ธฐ(Async) ํต์ ๊ณผ ๋๊ธฐ(Sync) ํต์ ์ ์ฅ๋จ์ ์ ์ ํ์ ํ๊ณ , ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ์ฌ์ฉํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, ์นํ์ด์ง์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ ๋์์ธ์ ๋ฐ๊พธ๋ ๊ฒฝ์ฐ์๋ ๋๊ธฐ(Sync) ํต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ์ ์๊ณ , ์นํ์ด์ง์ ์ผ๋ถ๋ถ๋ง ์์ฃผ ๋ฐ๋๋ ๊ฒฝ์ฐ์๋ ๋น๋๊ธฐ(Async) ํต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ์ ์๋ค.
๋น๋๊ธฐ(Async) ํต์ | ๋๊ธฐ(Sync) ํต์ |
์์ฒญ๊ณผ ์๋ต์ด ๋์์ ์ผ์ด๋์ง ์๋๋ค. | ์์ฒญ๊ณผ ์๋ต์ด ๋์์ ์ผ์ด๋๋ค. |
์นํ์ด์ง์ ์ผ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํ๋ค. | ์นํ์ด์ง์ ์ ์ฒด๋ฅผ ์ ๋ฐ์ดํธํ๋ค. |
์ฝ๋์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ ์ ์๋ค. | ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ๊ณผ ์ง๊ด์ฑ์ ์ ์งํ ์ ์๋ค. |
์์ฒญ๊ณผ ์๋ต์ ์์๋ฅผ ๋ณด์ฅํ ์ ์๋ค. | ์์ฒญ๊ณผ ์๋ต์ ์์๋ฅผ ๋ณด์ฅํ ์ ์๋ค. |
์๋ฌ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์๋ค. | ์๋ฌ ์ฒ๋ฆฌ๊ฐ ์ฌ์ธ ์ ์๋ค. |
์นํ์ด์ง์ ์๋์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค. | ์นํ์ด์ง์ ์๋์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค. |
์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ์ํฌ ์ ์๋ค. | ์ฌ์ฉ์ ๊ฒฝํ์ด ๋จ์ด์ง ์ ์๋ค. |
๋ณ๋ ฌ์ ์ผ๋ก ์ฌ๋ฌ ์์ ์ ์ํํ ์ ์๋ค. | ๋ณ๋ ฌ์ ์ผ๋ก ์ฌ๋ฌ ์์ ์ ์ํํ ์ ์๋ค. |
# ์ฐธ๊ณ ์๋ฃ
https://hongssup.tistory.com/9
https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-Synchronous%EB%8F%99%EA%B8%B0%EC%8B%9D-%ED%86%B5%EC%8B%A0%EA%B3%BC-Asynchronous%EB%B9%84%EB%8F%99%EA%B8%B0%EC%8B%9D-%ED%86%B5%EC%8B%A0%EC%9D%B4%EB%9E%80
https://m.blog.naver.com/sjc02183/222028523941
https://wildeveloperetrain.tistory.com/104
http://www.tcpschool.com/ajax/ajax_intro_works
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.