10_Dad Jokes
๐ป ์ฃผ์ : Fetch API๋ฅผ ํตํด ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฌด์์๋ก ์์ฌ๊ฐ๊ทธ๊ฐ ๋์ด.
- async & await ๋น๋๊ธฐ์ฒ๋ฆฌ
async function generateJoke() {
const config = {
headers: {
'Accept': 'application/json'
},
}
const res = await fetch('https://icanhazdadjoke.com', config);
const data = await res.json();
jokeEl.innerHTML = data.joke;
}
โ๏ธ other ver.
function generateJoke() {
const config = {
headers: {
'Accept': 'application/json'
},
}
fetch('https://icanhazdadjoke.com', config)
.then(res => res.json())
.then((data) => {
jokeEl.innerHTML = data.joke;
});
}
โ๋น๋๊ธฐ ์ฒ๋ฆฌ
- ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ JavaScript์์ ์ฅ๊ธฐ ์คํ ์์
์ด๋ ๋คํธ์ํฌ ์์ฒญ๊ณผ ๊ฐ์ ์์
์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ๋๋ค. ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํตํด ์ฅ๊ธฐ ์คํ ์์
์ด ์งํ๋๋ ๋์ ๋ค๋ฅธ ์์
์ ์ํํ ์ ์์ผ๋ฉฐ, ์์
์ด ์๋ฃ๋๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๐ถasync ํค์๋๋ ํจ์ ์ ์ ์์ ์ฌ์ฉ๋๋ฉฐ, ํด๋น ํจ์๊ฐ ๋น๋๊ธฐ ํจ์์์ ๋ํ๋ธ๋ค.
๐ถawait ํค์๋๋ async ํจ์ ๋ด๋ถ์์ ์ฌ์ฉ๋๋ฉฐ, ๋น๋๊ธฐ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ญํ ์ ํ๋ค.
- async ํจ์๋ ํญ์ Promise๋ฅผ ๋ฐํํ๋ค. await ํค์๋๋ Promise๋ฅผ ๋๊ธฐํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๋น๋๊ธฐ ์์
์ ๊ฒฐ๊ณผ๋ฅผ ๋๊ธฐ์ ์ธ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
[์์ ์ฝ๋]
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.log('Error:', error);
}
}
fetchData();
- fetchData ํจ์๋ async ํจ์.
- await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ fetch ํจ์๋ฅผ ํธ์ถํ๊ณ , ํด๋น ๋น๋๊ธฐ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. ๊ทธ ํ, await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ response.json()์ ํธ์ถํ๊ณ , ๋ค์ ๋น๋๊ธฐ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. ๊ทธ ๊ฒฐ๊ณผ๋ฅผ data ๋ณ์์ ํ ๋นํ๊ณ ์ถ๋ ฅํ๋ค.
- async ํจ์ ๋ด๋ถ์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ try...catch ๋ฌธ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋น๋๊ธฐ ์์
์ค ๋ฐ์ํ๋ ์์ธ๋ฅผ ์บ์นํ๊ณ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
- await ํค์๋๋ Promise ๊ฐ์ฒด ์ธ์๋ async ํจ์ ๋ด๋ถ์์ awaitableํ ๊ฐ(์: ๋ค๋ฅธ async ํจ์, Promise๊ฐ ์๋ ๊ฐ ๋ฑ)์ ์ฌ์ฉํ ์ ์๋ค. ์ด ๊ฒฝ์ฐ, await๋ ๊ฐ์ ๋ฐํํ๋ฉฐ, ํด๋น ๊ฐ์ ๋น๋๊ธฐ ์์
์ ์๋ฃ ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ฌ์ฉ๋๋ค.
๐๐ป async์ await๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋๊ธฐ ์์
์ ๋ณด๋ค ์ง๊ด์ ์ด๊ณ ๋๊ธฐ์ ์ธ ์ฝ๋์ ์ ์ฌํ ๊ตฌ๋ฌธ์ผ๋ก ์์ฑํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋น๋๊ธฐ ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์๋ค.