2017-09-13 1 views
-1

redis.set 콜백에 대한 오류 예외를 throw하고 try-catch 블록에서 catch 한 다음 오류 처리 Express 미들웨어로 제어를 가져 오려고합니다.nodejs에서 동기화 콜백에 대한 예외를 throw하는 방법은 무엇입니까?

try { 
    redis.get('key', (err, reply) => { 
    if(err) throw err; 
    if(!reply) throw new Error('Can't find key'); 
    }); 
} 
catch{ 
    next(error); 
} 

문제는 try-catch가 단순히 작동하지 않고 노드 콘솔에 오류가 발생하지만 서버가 200 상태로 응답한다는 것입니다.

+0

방법이 코드를 호출합니까? 어떻게 응답합니까? – alexmac

답변

0

비동기 이벤트를 포착 할 수 없습니다. 그것을 위해 약속을 사용

const getKey = new Promise((res,rej) => { 
    redis.get('key', (err, reply) => { 
    if(err) return rej(err); 
    res(reply); 
    }); 
}); 

그래서 하나를 수행 할 수 있습니다

getKey.catch(next); 

getKey.then(reply => { 
    //do whatever 
    next(); 
}); 
+0

이 콜백이 비동기임을, 고맙습니다. – Quimmo

관련 문제