Callback๊ณผ Promise
๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ฌธ์ ์
โ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ํต์ฌ์ Web API๋ก ๋ค์ด์ค๋ ์์๊ฐ ์๋๋ผ ์์
์ด ์๋ฃ๋๋ ์์์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋๋ค๋ ๊ฒ
โ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์์ํ๋ฉด์ ์ฝ๋๋ฅผ ์งค ์ ์๋ค
์ฝ๋ฐฑํจ์(Callback Function)
โ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ ํจ์
โ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๋น๋๊ธฐ ์์
์ด ์ผ๋ฃ๋ ํ ์คํํ ์์
์ ๋ช
์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋น๋๊ธฐ ์ฝ๋ฐฑ(asynchronous callback)์ด๋ผ ๋ถ๋ฅธ๋ค.
์ฝ๋ฐฑํจ์๋ฅผ ์ฌ์ฉํ๋ ์ด์
โ ๋ช
์์ ์ธ ํธ์ถ์ด ์๋ ํน์ ํ ์กฐ๊ฑด ํน์ ํ๋์ ์ํด ํธ์ถ๋๋๋ก ์์ฑํ ์ ์์
โ '์์ฒญ์ด ๋ค์ด์ค๋ฉด', '์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด', '๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ฉด'๋ฑ์ ์กฐ๊ฑด์ผ๋ก ์ดํ ๋ก์ง์ ์ ์ดํ ์ ์์
โ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋์ํ ์ ์๊ฒํจ
์ฝ๋ฐฑ ์ง์ฅ
โ ์ฐ์์ ์ผ๋ก ๋ฐ์ํ๋ ๋น๋๊ธฐ ์์
์ ์์ฐจ์ ์ผ๋ก ์งํํ ์ ์๊ฒํจ
โ ์ฝ๋๊ฐ ์ง๋์น๊ฒ ๊น์ด์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
Promise
๊ฐ์
โ Callback Hell ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ฐ์ฒด
โ '์์
์ด ๋๋๋ฉด ์คํ ์์ผ ์ค๊ฒ' ๋ผ๋ ์ฝ์
โ ๋น๋๊ธฐ ์์
์ ์๋ฃ ๋๋ ์คํจ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด
โ Promise ๊ธฐ๋ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ก ์ด์ ์ ์ฌ์ฉํ Axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ!
- ์ฑ๊ณต์ ๋ํ ์ฝ์
then()
- ์คํจ์ ๋ํ ์ฝ์
cathch()
then & catch
<script>
axios({
method: 'get',
url: URL,
})
.then(response => {
console.log(response)
return response.data
})
.then(response => {
console.log(response)
return response.title
})
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
</script>
โ then(callback)
- ์์ฒญํ ์์ ์ด ์ฑ๊ณตํ๋ฉด callback ์คํ
- callback์ ์ด์ ์์ ์ ์ฑ๊ณต ๊ฒฐ๊ณผ๋ฅผ ์ธ์๋ก ๋ฐ์
โ catch(callback)
then()
์ด ํ๋๋ผ๋ ์คํจํ๋ฉด callback ์คํ- callback์ ์ด์ ์์ ์ ์คํจ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ์ ๋ฌ ๋ฐ์
โ then ๊ณผ catch ๋ชจ๋ ํญ์ promise ๊ฐ์ฒด๋ฅผ ๋ฐํ, ์ฆ ๊ณ์ํด์ chaining
์ ํ ์ ์์
โ axios๋ก ์ฒ๋ฆฌํ ๋น๋๊ธฐ ๋ก์ง์ด ํญ์ promise๊ฐ์ฒด๋ฅผ ๋ฐํ, ๊ทธ๋์ ๊ณ์ then์ ์ด์ด ๋๊ฐ๋ฉด์ ์์ฑ ๊ฐ๋ฅ
Promise๊ฐ ๋ณด์ฅํ๋ ๊ฒ(vs ๋น๋๊ธฐ ์ฝ๋ฐฑ)
- callback ํจ์๋ JavaScript์ Event Loop๊ฐ ํ์ฌ ์คํ ์ค์ด Call Stack์ ์๋ฃํ๊ธฐ ์ด์ ์์ ์ ๋ ํธ์ถ๋์ง ์๋๋ค.
- Promise callback ํจ์๋ Event Queue์ ๋ฐฐ์น๋๋ ์๊ฒฉํ ์์๋ก ํธ์ถ๋๋ค.
- ๋น๋๊ธฐ ์์
์ด ์ฑ๊ณตํ๊ฑฐ๋ ์คํจํ ๋ค์
.then()
๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ถ๊ฐํ ๊ฒฝ์ฐ์๋ 1๋ฒ๊ณผ ๋๊ฐ์ด ๋์ .then()
์ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ callback ํจ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค.(chaining)
- ๊ฐ๊ฐ์ callback์ ์ฃผ์ด์ง ์์๋๋ก ํ๋ํ๋ ์คํ๋๋ค.
- chaining์ Promise์ ๊ฐ์ฅ ๋ฐ์ด๋ ์ฅ์
- promise ๋ฐฉ์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋ง์น ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์์์ ์๋๋ก ์ ๋ ๋ฐฉ์์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
'โญ Personal_Study > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Axios (0) | 2022.11.05 |
---|---|
๋๊ธฐ์ ๋น๋๊ธฐ (0) | 2022.11.04 |
JavaScript์์์ This (0) | 2022.11.03 |
Event (0) | 2022.11.02 |
JavaScript๋ฅผ ํ์ฉํ DOM ์กฐ์ ๊ธฐ์ด (0) | 2022.11.02 |
๋๊ธ