ํฐ์คํ ๋ฆฌ ๋ทฐ
[๐ฆ] ์๋~ ์ง๋๋ฒจ๋ก ์๋ ค๋๋ฆด๊ฒ์! (2) - async, await
์ฑ._. 2025. 1. 17. 20:01[๐ฆ] ์๋~ ์ง๋๋ฒจ๋ก ์๋ ค๋๋ฆด๊ฒ์! (1) - promise
Promise fetch๋ Promise๋ฅผ return ํ๋ ํจ์์ด๋ค. ๐fetch๋? ์ธ๋ถ์์ ๋ฐ์ดํฐ(์ ๋ณด)๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์ ๐Promise๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋น๊ตํ๊ธฐ (document.querySelector("์ ํ์") vs fetch("์ฃผ์")) document.querySelecto
coco910.tistory.com
fetch๋ ๋น๋๊ธฐ ํจ์์ด๊ธฐ ๋๋ฌธ์ ๋ก์ง์ด ํจ๊ป ์์ํด์ ๋จผ์ ์ฒ๋ฆฌ๋๋ ๊ฒ์ ๋จผ์ ๋ฐํํ๋ค.
์๋ ์์ ์ฌ์ง์ ํตํด ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์๋ค.

์๋ฅผ ๋ค์ด ์ผ์ ์์๊ฐ ์๋์ ๊ฐ๋ค๊ณ ํ์.
0. ์์ํ๋ค๊ณ ์๋ ค์ฃผ๊ธฐ
1. TMDB ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
2. TMDB ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก UI ๋ง๋ค๊ธฐ
3. ์์ฑ๋๋ค๊ณ ์๋ ค์ฃผ๊ธฐ
์ด๋, ์ผ์ด ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด์ 2->3->1->0 ์ ์์๋ก ์งํ๋์๋ค๊ณ ํ๋ค๋ฉด ํฐ์ผ์ด ๋ ๊ฒ์ด๋ค..ใ ใ
๋ฐ๋ผ์ ์ด์ฒ๋ผ ์ผ์ ์์๊ฐ ์ค์ํ ๊ฒฝ์ฐ์๋ async์ await๋ฅผ ์ฌ์ฉํ์ฌ ์์ฐจ์ ์ผ๋ก ์งํ์ํฌ ์ ์๋ค.
[await 1]
0. ์์ํ๋ค๊ณ ์๋ ค์ฃผ๊ธฐ
await 1. TMDB ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ =>๋น๋๊ธฐ(10์ด)
2. TMDB ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก UI ๋ง๋ค๊ธฐ =>๋น๋๊ธฐ(3์ด)
3. ์์ฑ๋๋ค๊ณ ์๋ ค์ฃผ๊ธฐ => ๋น๋๊ธฐ(2์ด)
์ฒ๋ฆฌ ๊ฒฐ๊ณผ : 0->1->3->2
[await 2]
0. ์์ํ๋ค๊ณ ์๋ ค์ฃผ๊ธฐ
await 1. TMDB ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ =>๋น๋๊ธฐ(10์ด)
await 2. TMDB ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก UI ๋ง๋ค๊ธฐ =>๋น๋๊ธฐ(3์ด)
3. ์์ฑ๋๋ค๊ณ ์๋ ค์ฃผ๊ธฐ => ๋น๋๊ธฐ(2์ด)
์ฒ๋ฆฌ ๊ฒฐ๊ณผ : 0->1->2->3
===> await๋ฅผ ๋ถ์ธ ์ผ์ด ๋๋๊ธฐ ์ ์๋ ์ ๋ ๋ค์์ผ๋ก ๋์ด๊ฐ์ง ์๋๋ค!
async & await
๐await : ๊ธฐ๋ค๋ฆฌ๋ค
๐์์ ๋ฅผ ํตํด ์์๋ณด๊ธฐ
promise chaining์ผ๋ก ์์ฑ๋ ์ฝ๋๋ฅผ async, await๋ก ๋ฐ๊ฟ๋ณด๊ธฐ
// ๋ฐ๊พธ๊ธฐ ์
fetch("https://jsonplaceholder.typicode.com/posts")
.then((response) => {
return response.json();
})
.then((data) => {
console.log(data)
})
์์ ์์ ๋ฅผ ๋ฐ๊ฟ๋ณด์.
1. .then์ ๋ ๋ฆฌ๊ณ await ๋ฅผ ์์ ๋ถ์ธ๋ค.
await fetch("https://jsonplaceholder.typicode.com/posts")
2. .then์ ์ฝ๋ฐฑํจ์ ํ๋ผ๋ฏธํฐ์ ๋ค์ด๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ์๋ก ๋ฐ๋๋ค. ๋ณ์ ์ด๋ฆ์ ๋ง์๋๋ก
const response = await fetch("https://jsonplaceholder.typicode.com/posts")
3. .then์ ๋ ๋ฆฌ๊ณ ์ด์ ์ return ์ ์๋ ๋ ์์ await๋ฅผ ๋ถ์ธ๋ค.
const response = await fetch("https://jsonplaceholder.typicode.com/posts")
await response.json();
4. ๋ค์ .then์ ์ฝ๋ฐฑํจ์ ํ๋ผ๋ฏธํฐ์ ๋ค์ด๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ์๋ก ๋ฐ๋๋ค. ๋ณ์ ์ด๋ฆ์ ๋ง์๋๋ก
const response = await fetch("https://jsonplaceholder.typicode.com/posts");
const data = await response.json();
5. ์ผ๋ฐ์ ์ผ๋ก await๋ async ํจ์ ์์์๋ง ์ฌ์ฉํ๋ค.
(async ํจ์ ์๋์ด๋ ๋๊ธด ํ๋ ์ผ๋ฐ์ ์ผ๋ก ํจ์ ์์์ ์ฌ์ฉํ๋ค) → ์ฐ์ ์ async ํจ์ ์์์๋ง ์ฌ์ฉํ๋ค๊ณ ์ดํดํ๊ธฐ.
async function getPosts() {
const response = await fetch("https://jsonplaceholder.typicode.com/posts");
const data = await response.json();
console.log(data)
}
getPosts();
๐์ฐ์ตํ๊ธฐ
๋ฌธ์ 1.
์๋ Promise chaining ๋ฐฉ์์ async, await๋ก ์์ฑํ์ธ์.
fetch("https://jsonplaceholder.typicode.com/posts/1")
.then((response) => {
return response.json();
})
.then((data) => {
console.log(data);
});
์ ๋ต
async function getPost() {
const response = await fetch("https://jsonplaceholder.typicode.com/posts/1");
const data = await response.json();
console.log(data)
}
getPost();
๋ฌธ์ 2.
์๋ Promise chaining ๋ฐฉ์์ async, await๋ก ์์ฑํ์ธ์.
fetch("https://jsonplaceholder.typicode.com/comments")
.then((response) => {
return response.json();
})
.then((data) => {
console.log(data);
});
์ ๋ต
async function getComments() {
const response = await fetch("https://jsonplaceholder.typicode.com/comments")
const data = await response.json();
console.log(data)
}
getComments();
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๐ฆ] ๋ฐฐ์ด ๋ฉ์๋(1) - forEach๋ ๊ฒฐ๊ตญ for๋ฌธ์ด๋ค! (0) | 2025.01.17 |
|---|---|
| [๐ฆ] ์๋~ ์ง๋๋ฒจ๋ก ์๋ ค๋๋ฆด๊ฒ์! (3) - try, catch (0) | 2025.01.17 |
| [๐ฆ] localStorage (1) | 2025.01.17 |
| [๐ฆ] ์ด๋ฒคํธ ๋ฒ๋ธ๋ง ๐ซง (0) | 2025.01.17 |
| ๊ฐํน๊ฐ๋ค ํท๊ฐ๋ฆด ์ ์๋ ๋ฌธ์ ๋ค ! - ๋ฌธ์ ์ํ ์ค๋ต ํ์ด (1) | 2025.01.16 |