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 |