ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋น„๋™๊ธฐ 1ํŽธ - promise

 

[๐Ÿฆ] ์†๋‹˜~ ์ง„๋™๋ฒจ๋กœ ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š”! (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();
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ