728x90
반응형
앞서 다루었던 Promise 문법이 콜백 헬을 해결하였지만, 여전히 코드가 장황합니다.
Node 7.6버전(javascript ES2017)부터 지원되는async/await 문법은 Promise 코드를 한번 더 깔끔하게 줄여줍니다.
■ async/await문법 사용법
- 기존 Promise문법
<script>
function findAndSaveUser(Users) {
Users.findOne({})
.then((user) => {
user.name = 'zero';
return user.save();
})
.then((user) => {
return Users.findOne({ gender : 'm' });
})
.then((user) => {
// 생략
})
.catch((err) => {
console.error(err);
});
}
</script>
- async/await 변환
<script>
async function findAndSaveUser(Users) {
try {
let user = await Users.findOne({});
user.name = 'zero';
user = await user.save();
user = await Users.findOne({ gender: 'm' });
// 생략
} catch (error) {
console.error(error);
}
}
</script>
함수 선언부를 일반 함수 대신 async function으로 교체한 후, 프로미스 앞에 await을 붙여주었습니다.
해당 함수는 await이 붙은 프로미스가 resolve될 때까지 대기한 후 다음 로직으로 넘어가게 됩니다.
- async/await 화살표 함수 변환
<script>
const findAndSaveUser = async (Users) => {
try {
let user = await Users.findOne({});
user.name = 'zero';
user = await user.save();
user = await Users.findOne({ gender: 'm' });
// 생략
} catch (error) {
console.error(error);
}
};
</script>
앞서 배운 Promise문법과 async/await문법을 사용하여 중첩되는 콜백 함수를 간략하게 변환하였습니다.
많은 NodeJS 코드가 Promise와 async/await으로 되어있기 때문에 변환 연습을 통해 익숙해지는 것이 중요합니다.
참고 : 길벗출판사 - Node.js 교과서(조현영 지음)
728x90
반응형