π μΉμ λΉλκΈ°(Async) / λκΈ°(Sync) ν΅μ μ 리
μΉμμμ λΉλκΈ°μ λκΈ°
μΉ κ°λ°μ νλ€λ³΄λ©΄ λΉλκΈ°(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