카테고리 없음

[JavaScript] async/await

썽연 2021. 10. 14. 22:40
728x90

async/await 문법은 Promise를 더욱 쉽게 사용할 수 있게 해준다.

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

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

process();

함수를 사용할 때 앞부분에 async키워드를 붙여줌주고, 

promise앞부분에 await를 붙여준다.

 

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

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

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

process().then(() => {
  console.log('작업이 끝났어요!');
});

위의 코드를 실행한 결과값이다.

1초가 쉬면서 Promise라고 나온다.

 

async 함수에서 에러를 발생 시킬 때에는 throw를 사용하고, 

에러를 잡아낼 때에는 try/catch문을 사용한다.

 

 

이렇게, await 를 사용하여 잠깐 쉴 수 있는 타임이 있는데,

동시에 나오게 하고싶다면 promise.all을 사용하면된다.

 

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

const getDog = async () => {
  await sleep(1000);
  return '멍멍이';
};

const getRabbit = async () => {
  await sleep(500);
  return '토끼';
};
const getTurtle = async () => {
  await sleep(3000);
  return '거북이';
};

async function process() {
  const results = await Promise.all([getDog(), getRabbit(), getTurtle()]);
  console.log(results);
}

process();

단, Promise.all 를 사용 할 때,

등록한 Promise 중 하나라도 실패하면, 모든게 실패 한 것으로 간주한다.

 

728x90