๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

JavaScript

[ JS ] Promise VS async await ๋น„๊ต

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์š” ๋ฐฉ์‹์ธ Promise์™€ async/await์— ๋Œ€ํ•ด ๋น„๊ตํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ํ‰์†Œ ์ž‘์—…์„ ํ•˜๋ฉด์„œ ๋‘˜์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์ฐจ์ด์ ๊ณผ ํŠน์ง•์„ ๋น„๊ตํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. (๋‘˜ ๋‹ค ES6+ ์ดํ›„์— ๋„์ž…๋˜์—ˆ๋‹ค.)

 

 


 

 


1. ๋ฌธ๋ฒ•
   - Promise: `.then()`, `.catch()`, `.finally()` ๋ฉ”์„œ๋“œ๋ฅผ ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉ.
   - async/await: ๋” ๋™๊ธฐ์ ์ธ ์ฝ”๋“œ ์Šคํƒ€์ผ์ด๋ฉฐ `try/catch` ๊ตฌ๋ฌธ์œผ๋กœ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 


2. ๊ฐ€๋…์„ฑ
   - Promise: ๋ณต์žกํ•œ ๋น„๋™๊ธฐ ๋กœ์ง์—์„œ๋Š” ์ค‘์ฒฉ๋œ `.then()`์œผ๋กœ ์ธํ•ด "์ฝœ๋ฐฑ ์ง€์˜ฅ"๊ณผ ์œ ์‚ฌํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
   - async/await: ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ์ฝ๊ธฐ ์‰ฌ์šด ์ง๊ด€์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


3. ์—๋Ÿฌ ์ฒ˜๋ฆฌ
   - Promise: `.catch()` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
   - async/await: ์ผ๋ฐ˜์ ์ธ `try/catch` ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 


4. ๋ณ‘๋ ฌ ์‹คํ–‰
   - Promise: `Promise.all()`, `Promise.race()` ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ Promise๋ฅผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
   - async/await: ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. (์˜ˆ: `Promise.all()`๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ)

 

 


5. ๋ธŒ๋ผ์šฐ์ € ์ง€์›
   - Promise: ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›.
   - async/await: Promise๋ณด๋‹ค ๋‚˜์ค‘์— ๋„์ž…๋˜์–ด, ์ƒ๋Œ€์ ์œผ๋กœ ๋” ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›.

 

 


6. ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ 
   - async/await๋Š” Promise๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— async ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ Promise๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.



 

Promise์™€ async/await ์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

// Promise
function fetchData() {
  return fetch('https://api.example.com/data')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));
}


// async/await
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error:', error);
  }
}


์ด ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด, async/await๊ฐ€ ๋” ๋™๊ธฐ์ ์ธ ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์ œ๊ณต ๋ฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ๋” ์ง๊ด€์ ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

 

 


 

๐ŸŒธ ์ถœ์ฒ˜ ๐ŸŒธ

 

Promise - MDN

async function - MDN