Javascript

Async/Await

농담농담 2022. 9. 4. 16:02

Async Await은 프로젝트 하면서 수없이 써본것 같다.

대부분 함수 내에서 DB에 어떤 요청을 하는 코드에서 썼다. DB에 요청하고 그 처리가 완료될때까지 대기 후 결과를 받아야 하기 때문이다.

async function showWorkSpaces(req, res) {
  try {
    const workSpaceList = await workSpace.find({});

    return res.status(200).json(
      workSpaceList
    );
  } catch (err) {
    return res
      .status(400)
      .json({ success: false, message: "전체 워크스페이스 조회 실패" });
  }
}

Async는 그냥 함수 앞에 붙여주면 된다. 뭔가 기능을 선언해주는 느낌으로 ?

await 에러가 나면 코드실행을 멈춘다. await 하단에 있는 코드들은 더 이상 실행이 되지 않기 때문에 이를 해결하기 위해

try catch라는 자바스크립트 문법인데, try {} 안의 코드가 에러가 나고 멈출 경우 대신 catch {} 내부의 코드를 실행한다.

 

 

async/await 구문은 Promise 객체를 다루는 코드(Promise Chaining 코드 등)를 사람들이 좀더 익숙하게 느끼는 동기 실행 스타일의 코드로 작성할 수 있게 해주는 Syntactic sugar 이다.

async 함수 안의 내용이 순차적으로 실행되다가도, await 문을 만나면 await 바로 뒤에 붙은 코드를 실행해두고, 일단은 함수 바깥으로 코드 흐름이 바뀐다.