백엔드 기술/NodeJS
[NodeJS] callback 방식 vs promise 방식
pogles
2023. 2. 27. 16:53
1) callback
- 에러를 빠르게 확인할 수 있음
- callback 함수가 실행되고 안의 기능이 끝나기 전에 다른 작업이 실행될 수 있음(비동기방식)
- 함수안의 함수형태로 가독성이 떨어짐
- if - else 문이 사용되고 callback 함수가 중첩될 수록(깊어질 수록) 코드 가독성이 현저히 떨어지고 유지보수가 힘듦
// callback 함수
export const home = (req, res) => {
console.log("함수 실행 1/3");
Video.find({}, (error, videos) { //Video 는 영화 데이터모델(mongoDB)
console.log("함수 실행 3/3 마지막!! 함수끝");
if (!error) return res.render("home", {videos});
else return res.render("error-page");
});
console.log("함수 실행 2/3");
}
2) promise
- 간결하여 가독성이 높음
- async / await 사용
- function 앞에 asycn, 동기처리할 기능 앞에 await 작성하여 사용.
- 동기식으로 처리되어 코드순차적으로 실행됨
- 기본적으로 callback 과 같은 기능을 제공함
export const home = async(req, res) => {
console.log("함수 실행 1/3");
try {
console.log("함수 실행 2/3");
const videos = await Video.find({}); // Video.find({}) 가 끝날때까지 기다려줌(await)
console.log("함수 실행 3/3 끝!");
return res.render("home", videos);
} catch {
return res.render("error-page");
}
}