[Node.js] 04 - async/await

2024. 4. 22. 04:08·Dev/Node.js

async/await란?

✅ 프로미스 기반 코드를 좀 더 쓰기 쉽고 읽기 쉽게 한다.

 

✅ 비동기 코드를 동기식으로 작성 가능하게 한다.

- async: 함수 앞에 붙이면 Promise를 반환

- await: Promise 앞에 붙이면 Promise가 전부 수행될 때까지 기다렸다가 결과를 반환. async 함수에서만 사용 가능

- 변수 = await 프로미스;  ➡ 프로미스가 resolve된 값이 변수에 저장

- 변수 = await 값; ➡ 값이 변수에 저장

 

아래 코드는 프로미스로 작성된 코드를 async/await로 수정한 예시다.

 

✅ 에러 처리를 위해 try-catch로 감싸주어야 한다.

- 각각의 프로미스 에러 처리를 위해서는 각각을 try-catch로 감싸우저야 함

- 위 코드를 try-catch로 수정하면 아래와 같다.

async function findAndSaveUser(Users) {
    try {
    let user = await Users.findOne({});
    user.name = 'msjwa';
    user = await user.save();
    user = await Users.findOne({gender:'Male'});
    // 생략
    } catch (error) {
        console.log(error);
    }
}

 

✅ Arrow Function(화살표 함수)도 async/await를 사용 가능하다.

const findAndSaveUser = async (Users) => {
    try {
    let user = await Users.findOne({});
    user.name = 'msjwa';
    user = await user.save();
    user = await Users.findOne({gender:'Male'});
    // 생략
    } catch (error) {
        console.log(error);
    }
};

 

✅ Async 함수는 항상 Promise를 반환(return).

- then이나 await를 붙일 수 있음

async function findAndSaveUser(Users) {
    // 생략
}

findAndSaveUser().then(() => {
    // 생략
});
// 또는
async function other() {
    const result = await findAndSaveUser();
}

'Dev > Node.js' 카테고리의 다른 글

[Node.js] 06 - REPL/JS 파일 사용법  (0) 2024.04.22
[Node.js] 05 - AJAX / JSON  (1) 2024.04.22
[Node.js] 03 - Promise  (1) 2024.04.22
[Node.js] 02 - Callback  (3) 2024.04.22
[Node.js] 01 - 노드의 시작하기(특성 및 역할)  (1) 2024.04.22
'Dev/Node.js' 카테고리의 다른 글
  • [Node.js] 06 - REPL/JS 파일 사용법
  • [Node.js] 05 - AJAX / JSON
  • [Node.js] 03 - Promise
  • [Node.js] 02 - Callback
min8282
min8282
  • min8282
    min8282
    min8282
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Security (33)
        • System & Network (2)
        • Application (5)
        • Cloud (20)
      • Dev (18)
        • Node.js (12)
        • Hadoop (3)
        • BOJ (2)
      • Web3 & Blockchain (2)
        • Web3 (2)
      • K-Shield.Jr (15)
      • Web Security Academy (3)
      • Wargame (13)
        • Dreamhack (3)
        • Bandit (10)
      • NS (16)
        • CTF (6)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    systems manager
    정처기 필기
    AWS SSM
    메타코드
    metacodem
    AWS CLI
    web3 보안
    스마트 컨트랙트
    메타코드M
    aws lambda
    splunk db connect
    보안 그룹
    web3
    ESC1
    metacode
    web security academy
    오블완
    File Upload
    Path Traversal
    ELB
    정보처리기사
    티스토리챌린지
    정처기필기
    탈중앙화
    aws 트리거
    스마트컨트랙트
    prepared statement
    Session Manager
    정처기
    amazon s3 트리거
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
min8282
[Node.js] 04 - async/await
상단으로

티스토리툴바