Async... Await...

async function

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์–ธ์–ด๋‹ค.

    • ์ด๋Š” ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์ค„์”ฉ ์‹คํ–‰๋˜๋ฉฐ, ๊ฐ ๋ผ์ธ์˜ ์ฝ”๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋‹ค์Œ ๋ผ์ธ์œผ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

    • ์ด๋Ÿฌํ•œ ๋™๊ธฐ์  ์‹คํ–‰ ๋ชจ๋ธ์€ ์ฝ”๋“œ์˜ ํ๋ฆ„์„ ์˜ˆ์ธกํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•˜์ฃผ์ง€๋งŒ, ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…(์˜ˆ: ๋„คํŠธ์›Œํฌ ์š”์ฒญ)์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • async์™€ await์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์›Œ๋“œ๋‹ค.

async

  • ์ด ํ‚ค์›Œ๋“œ๋Š” ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

  • async ํ•จ์ˆ˜๋Š” Promise ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋“ฑ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ async๋ฅผ ์„ ์–ธํ•˜๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๊ฒŒ ์ด ํ•จ์ˆ˜๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ผ๊ณ  ์•Œ๋ ค์ค€๋‹ค

async function fetchData() {
	// API์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
}

await

  • ์ด ํ‚ค์›Œ๋“œ๋Š” async ํ•จ์ˆ˜ ๋‚ด์—์„œ Promise ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

  • ํ•จ์ˆ˜์˜ ์‹คํ–‰์„ Promise ๊ฐ€ ์ฒ˜๋ฆฌ๋  ๋•Œ๊นŒ์ง€(์ดํ–‰๋˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€๋  ๋•Œ๊นŒ์ง€) ์ผ์‹œ ์ค‘์ง€ํ•œ๋‹ค.

  • await ๋Š” ์˜ค์ง async ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

async function fetchData() {
  let data = await fetch('https://api.example.com/data');
  let jsonData = await data.json();
  return jsonData;
}

์˜ˆ์‹œ

await ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

function resolveAfter2Seconds() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve('resolved');
      console.log('promise');
    }, 2000);
  });
}

async function asyncCall() {
  console.log('calling');
  const result = await resolveAfter2Seconds();
  console.log(result);
  // Expected output: 
  // > "calling" 
  // > "promise" 
  // > "resolved"
}

asyncCall();

await ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

function resolveAfter2Seconds() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve('resolved');
      console.log('promise');
    }, 2000);
  });
}

async function asyncCall() {
  console.log('calling');
  const result = resolveAfter2Seconds();
  console.log(result);
  // Expected output:
  // > "calling" 
  // > [object Promise] > 
  // "promise"`


asyncCall();

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

Last updated

Was this helpful?