Home async & await
Post
Cancel

async & await

내일배움캠프 LGLG!

3주차(프로그래밍 기초)

async / await

  • ES2017에 도입된 문법, Promise 로직을 더 쉽고 간결하게 사용할 수 있게 해줌
  • 단, Promise를 대체하기 위한 기능이 아니며 내부적으로는 여전히 Promise를 사용하여 비동기 처리를 하되, 프로그래머가 유지보수하기 편하게 보이는 문법만 다르게 해줄 뿐이다.

async / await 기본 사용법

  • function 키워드 앞에 async 를 붙이고, 비동기 처리되는 부분 앞에 await만 붙여주면 된다.
1
2
3
4
5
6
7
async function test() {
  // logic
}

변수 = async () => {
  // logic
};

async / await 사용 예제

1
2
3
4
5
6
7
8
9
10
11
function asyncTest() {
  return new Promise((resolve, reject) => {
    const test = [1, 2, 3];
    resolve(test);
  });
}

async function logTest() {
  const result = await asyncTest();
  console.log(result);
}

asyncTest 함수는 Promise()객체를 반환하는 함수이다.
resolve() 함수를 사용했기 때문에 test 배열을 반환해야 한다.
만약 await를 사용하지 않고 promise(), then()을 사용했을 경우 코드가 길어져 가독성이 떨어졌을 것이다.

async / await 예외 처리

async / await에서 예외를 처리하는 방법은 try ~ catch이다.
promise에서 예외 처리를 위해 .catch()를 이용했던 것처럼 async에서는 catch {} 를 이용하면 된다.

1
2
3
4
5
6
7
8
9
10
11
async function test() {
  try {
    const user = await fetchUser();
    if (user.id === 1) {
      const todo = await fetchTodo();
      console.log(todo.title);
    }
  } catch (err) {
    console.log(error);
  }
}
This post is licensed under CC BY 4.0 by the author.

두 수의 합

두 수의 차