코딩쌀롱
[JS] Promise → async/await로 바꾸기 본문
Promise에 대해서는 이전 글에 작성하였습니다.
✱ Promise → async/await
function findAndSaveUser(Users) {
Users.findOne({})
.then(user => {
user.name = 'eve';
return user.save();
})
.then(user => {
return Users.findOne({ gender: 'f' });
})
.then(user => {
// 생략
})
.catch(err => {
console.error(err);
});
}
위 코드를 async/await로 바꿔보면 (에러 처리부분은 이 다음 코드에)
async function findAndSaveUser(Users) {
let user = await Users.findOne({});
user.name = 'eve';
user = await user.save();
user = await Users.findOne({ gender: 'f' });
// 생략
}
함수 선언부를 일반 함수가 아닌 async function으로 교체하고, 프라미스 앞에 await를 붙인다. 프라미스가 resolve될 때까지 기다린 뒤 다음 로직으로 넘어간다. 2번 라인은 await Users.findOne({})이 resolve될 때까지 기다린 다음에 user 변수를 초기화한다.
에러를 처리하는 부분을 추가하면
async function findAndSaveUser(Users) {
try {
let user = await Users.findOne({});
user.name = 'eve';
user = await user.save();
user = await Users.findOne({ gender: 'f' });
// 생략
} catch (err) {
console.error(err);
}
}
화살표 함수도 사용 가능하다.
const findAndSaveUser = async (Users) => {
try {
let user = await Users.findOne({});
user.name = 'eve';
user = await user.save();
user = await Users.findOne({ gender: 'f' });
// 생략
} catch (err) {
console.error(err);
}
}
참고
책 - 조현영 〔Node.js 교과서〕
'개발공부' 카테고리의 다른 글
[HTML¦CSS] input type='file'로 파일 입력 받기 (0) | 2021.02.07 |
---|---|
[JS] 마이크로 태스크, 매크로 태스크, 비동기 실행 흐름 이해하기 (7) | 2021.01.27 |
[JS] Promise (0) | 2021.01.26 |
프로세스와 스레드 비교 (0) | 2021.01.21 |
Comments