2017-09-13 3 views
-1

Ich möchte eine Fehler Ausnahme für eine Redis.Set-Callback und fangen in Try-Catch-Block und dann Kontrolle über die Fehlerbehandlung Express-Middleware.Wie eine Ausnahme für die Synchronisierung Rückruf in Nodejs zu werfen?

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

ist das Problem, mit 200 Status versuchen, dass Beifang einfach nicht funktioniert, Fehlerkonsole zum Knoten wird, aber Server reagiert.

+0

Wie nennt man diesen Code? Wie senden Sie eine Antwort? – alexmac

Antwort

0

Sie können asynchrone Ereignisse nicht erfassen. Verwenden Sie verspricht dafür:

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

So kann man tun:

getKey.catch(next); 

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

Vielen Dank, wusste nicht, dass dieser Rückruf asynchron ist. – Quimmo

Verwandte Themen