사소한 개발지식/JavaScript

JAVASCRIPT - async/await 문법

KimBY 2019. 6. 24. 16:10
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
반응형