본문 바로가기

Javascript

자바스크립트 중급 17 - async, await

async function getName() {
  //return Promise.resolve("Tom");
  throw new Error("err...");
}

getName().catch((err) => {
  console.log(err);
});

 

//await : async함수 내부에서만 사용가능

function getName(name) {
  return new Promise ((resolve, reject) => {
    setTimeout(() => {
      resolve(name);
    }, 1000);
  });
}

async function showName(){
  const result = await getName('Mike');
  console.log(result);
}

console.log("시작");
showName();

 

const f1 = () => {
  return new Promise((res, rej)=> {
    setTimeout(() => {
      res("1번 주문 완료");
    }, 1000);
  });
};

const f2 = (message) => {
  console.log(message);
  return new Promise((res, rej)=> {
    setTimeout(() => {
      res("2번 주문 완료");
    }, 3000);
  });
};

const f3 = (message) => {
  console.log(message);
  return new Promise((res, rej)=> {
    setTimeout(() => {
      res("3번 주문 완료");
    }, 2000);
  });
};

async function order(){
  const result1 = await f1();
  const result2 = await f2(result1);
  const result3 = await f3(result2);
  console.log(result3);
  console.log("종료");
}
order();

→ Promise/then 보다 async/await 를 썼을 때 가독성이 좋다. 

 

const f1 = () => {
  return new Promise((res, rej)=> {
    setTimeout(() => {
      res("1번 주문 완료");
    }, 1000);
  });
};

const f2 = (message) => {
  console.log(message);
  return new Promise((res, rej)=> {
    setTimeout(() => {
      //res("2번 주문 완료");
      rej(new Error("err.."));
    }, 3000);
  });
};

const f3 = (message) => {
  console.log(message);
  return new Promise((res, rej)=> {
    setTimeout(() => {
      res("3번 주문 완료");
    }, 2000);
  });
};

console.log("시작");
async function order() {
  try{
    const result1 = await f1();
    const result2 = await f2(result1);
    const result3 = await f3(result2);
    console.log(result3);
  } catch (e) {
    console.log(e);
  }
  console.log("종료");
}
order();
반응형