CALLBACK
์ฝ๋ฐฑ ํจ์๋ ํจ์๋ฅผ ๋ช ์์ ์ผ๋ก ํธ์ถํ๋ ๋ฐฉ์์ด ์๋๋ผ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์์คํ ์ ์ํด ํธ์ถ๋๋ ํจ์์ด๋ค.
์ฝ๋ฐฑํจ์๊ฐ ์์ฃผ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ ์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ด๋ค.
JavaScript์์ ํจ์๋ First-class object์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํจ์๋ ๋ณ์์ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
First-class object(์ผ๊ธ ๊ฐ์ฒด)๋ ์์ฑ, ๋์ , ์ฐ์ฐ, ์ธ์ ๋๋ ๋ฐํ๊ฐ์ผ๋ก์์ ์ ๋ฌ ๋ฑ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ธฐ๋ณธ์ ์กฐ์์ ์ ํ์์ด ์ฌ์ฉํ ์ ์๋ ๋์์ ์๋ฏธํ๋ค.
๋ฌด๋ช ์ literal(๋ฆฌํฐ๋ด)๋ก ํํ์ด ๊ฐ๋ฅ
๋ณ์๋ ์๋ฃ ๊ตฌ์กฐ(๊ฐ์ฒด, ๋ฐฐ์ด ๋ฑ)์ ์ ์ฅํ ์ ์๋ค.
ํจ์์ ๋งค๊ฐ๋ณ์์ ์ ๋ฌํ ์ ์๋ค.
๋ฐํ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
์ฝ๋ฐฑ ํจ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ์ ๋ฌ๋๊ณ ์ ๋ฌ๋ฐ์ ํจ์์ ๋ด๋ถ์์ ์ด๋ ํน์ ์์ ์ ์คํ๋๋ค.
์ฝ๋ฐฑ ํจ์๋ ์ฃผ๋ก ๋น๋๊ธฐ์ ์ฒ๋ฆฌ ๋ชจ๋ธ์์ ์ฌ์ฉ๋๋ค. ์ฝ๋ฐฑํจ์๋ ์ฝ๋ฐฑ Queue์ ๋ค์ด๊ฐ ์๋ค๊ฐ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํธ์ถ๋๋ค.
jQuery ajax
์ฌ๊ธฐ์ $.get
์ด ajax ํต์ ์ ํ๋ ๋ถ๋ถ์ด๋ค. ํด๋น url์ HTTP GET์์ฒญ์ ํ๋ ์ฝ๋์ด๋ค.
ํด๋น ์๋ฒ๋ก ๋ฐ์์จ ๋ฐ์ดํฐ๋ response
์ธ์์ ๋ด๊ธด๋ค.
ํ์ง๋ง getData()
๋ฅผ ํธ์ถ ํ์๋ ๊ฒฐ๊ณผ๊ฐ undefined์ด๋ค. ์ ๊ทธ๋ด๊น?
$.get()
์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค๊ธฐ ์ ์ return data
๋ฅผ์คํํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ฒ ํน์ ๋ก์ง์ ์คํ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ฃผ์ง ์๊ณ ๋๋จธ์ง ์ฝ๋๋ฅผ ๋จผ์ ์คํํ๋ ๊ฒ์ด ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ด๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผํ ๊น?
Callback function
Callback hell ์ฝ๋ฐฑ์ง์ฅ
์ฝ๋ฐฑ ์ง์ฅ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ก์ง์ ์ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฐ์ํด์ ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
์น์๋น์ค ๊ฐ๋ฐ์ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ๊น์ง ์ธ์ฝ๋ฉ, ์ฌ์ฉ์ ์ธ์ฆ ๋ฑ๋ฑ์ ์ฒ๋ฆฌํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด ๋ชจ๋ ๊ณผ์ ์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋ค๋ฉด ์ฝ๋ฐฑํจ์์์ ์ฝ๋ฐฑ์ ํธ์ถํ๋ ํ์(์ฝ๋ฐฑ ์ค์ฒฉ)์ ๊ตฌ์กฐ๊ฐ ๋๋ค. ์ด์ ๊ฐ์ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ callback hell์ด๋ผ ํ๋ค.
Callback hell์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์๊ฒ ํ์ฌ ์ค์๋ฅผ ์ ๋ฐ์ํฌ ํ๋ฅ ์ด ๋์์ง๋ฉฐ, error ์ฒ๋ฆฌ๊ฐ ๊ณค๋ํ๋ค.
Callback hell ํด๊ฒฐ๋ฐฉ๋ฒ
๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ์ฌ ํด๊ฒฐํ ์ ์๋ค. ํ์ง๋ง Promise ๋ Async
๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ ํธํ๊ฒ ๊ตฌํํ ์ ์๋ค.
์ฐธ์กฐํ์ด์ง
Last updated