Ich habe das Szenario im folgenden Code vereinfacht, weil ich hier keinen Platz habe, um meinen Anwendungsfall zu erklären, aber im Grunde gebe ich einen Fehler vom " fangen "Block eines Versprechens. Wie kann ich den Fehler bekommen, um von diesem catch-Block weitergeleitet zu werden (im Beispiel unten möchte ich, dass der Fehler vom äußeren "catch" -Block des "try/catch", in dem ich meinen Code eingeschlossen habe, gemeldet wird):"new Error()" im Catch-Block-Kontext gefangen
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
reject();
}, 1000);
});
try {
p.then(function() {
console.log('promise resolved');
}).catch(function() {
throw new Error('I want to get out of this catch block!');
});
} catch (err) {
console.log('I want to report the error from here' + err.message);
}
'try..catch' ist eine synchrone Anweisung, das geht nicht. Sie können jedoch eine andere '.catch()' ' – elclanrs
Kette Ich habe Ihre letzten Änderungen zurückgesetzt. Du hast eine verständliche Frage gestellt, hast eine Antwort bekommen, die du angenommen hast. Die Gemeinschaft sieht in einem guten Licht keine radikalen Änderungen an der Frage, wenn es erst einmal Antworten gibt, die tatsächlich das in der Frage ausgedrückte Problem lösen, und besonders dann, wenn es eine * angenommene * Antwort gibt. Außerdem ist die neue Frage ein Duplikat von [diesem] (http://stackoverflow.com/questions/26571328/how-do-i-properly-test-promises-with-mocha-and-chai). Gib einfach das Versprechen zurück: Mocha wird die Ablehnung als Fehler betrachten. – Louis
mein schlechtes. Ich dachte, ich brauche noch eine Antwort, aber dann habe ich die Antwort gefunden. – mags