전체 방문자
오늘
어제
  • 전체 글
    • HTML
    • CSS
    • Javascript
    • React
    • Typescript
    • Next.js
    • Webpack
    • Vue.js
    • Git & GitHub
    • Error
    • Study
    • 개발 일지✨

블로그 메뉴

  • 💡
  • ⚙️
hELLO · Designed By 정상우.
하루

Home

async/await
Javascript

async/await

2022. 5. 6. 19:11

[Javascript/자바스크립트] async await

 

async/await 문법은 ES8에 해당하는 문법으로, Promise 를 더욱 쉽게 사용할 수 있게 해준다.

사용법

async/await 문법을 사용할 때에는 함수를 선언할 때 함수의 앞 부분에 async 키워드를 붙여준다.

그리고 Promsie 앞 부분에 await 을 넣어주면 해당 프로미스가 끝날 때 까지 기다렸다가 다음 작업을 수행할 수 있다.

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function process() {
  console.log('안녕하세요!');
  await sleep(1000); // 1초쉬고
  console.log('반갑습니다!');
}

process();
// >> 안녕하세요! (1초 뒤에) 반갑습니다!

위 코드에서는 sleep 이라는 함수를 만들어서 파라미터로 넣어준 시간만큼 기다리는 Promise 를 만들고, 이를 process 함수에서 사용하였다.

= 특정 ms 이후 resolve 함수가 호출되고, return 끝나게 된다.

 

함수에서 async 를 사용하면, 해당 함수는 결과값으로 Promise 를 반환하게 된다.

= Promise 를 기다리는 작업을 .then으로 하지 않아도 된다.

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function process() {
  console.log('안녕하세요!');
  await sleep(1000); // 1초쉬고
  console.log('반갑습니다!');
  return true; // 결과값으로 Promise를 반환
}

process().then(value => {
  console.log(value);
});
// >> 안녕하세요!
// >> 반갑습니다!
// >> true

 

에러를 발생시킬 때

async 함수에서 에러를 발생시킬 때에는 throw 를 사용하고, 에러를 잡아낼 때에는 try/catch 문을 사용한다.

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function makeError() {
  await sleep(1000);
  const error = new Error();
  throw error;
}

async function process() {
  try {
    await makeError();
  } catch (e) {
    console.error(e);
  }
}

process();

 

    'Javascript' 카테고리의 다른 글
    • 카운터 만들기
    • Promise.all / Promise.race
    • Promise
    • 비동기처리의 이해

    티스토리툴바