백엔드 기술/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");
    }
    
}