2015-09-24 2 views
5

Wenn ich die Entwickler-Tools in Chrome angezeigt habe und ein Versprechen abgelehnt wurde, pausiert Chrome die Ausführung des Javascripts mit der Meldung "Bei Ablehnung von Versprechen angehalten". Kann ich in diesem Fall verhindern, dass Chrome pausiert (und immer noch Devtools geöffnet haben)?Kann ich verhindern, dass Chrome (v45) bei Ablehnung von Versprechen pausiert?

Abgelehnte Versprechungen sind ein Teil des "normalen" Ablaufs in meiner Anwendung und es ist unbequem, die Fortsetzen-Schaltfläche in Chrome jedes Mal zu drücken, wenn es passiert.

Sie können dieses Verhalten in Chrome testen, indem Sie die folgenden in der js-Konsole eingeben:

new Promise(function(accept, reject) { reject(); }) // (tested in v 45.0.2454.99) 

Dank.

Antwort

12

Chrome macht dies nur dann, wenn auf der Registerkarte "Quellen" die Option "Pause bei nicht abgefangener Ausnahme" aktiviert ist.

enter image description here

Wenn Sie es untick wird es nicht auf Fehler unterbrechen.

Eine Versprechen Ablehnung ist konzeptionell ein Fehler. Es ist die korrekte Art, es geistig zu modellieren, andernfalls sind die folgenden stummen Fehler:

Promise.resolve().then(function(){ 
    JSON.prase("{}"); // unhandled rejection, TypeError, typo 
    foooooo = 15; // unhandled ReferenceError, undefined 
}); 

Und so weiter.

Wenn Sie explizit eine Ablehnung unterdrücken, was zu einem synchronen verwendet ist „catch all“ Sie das gleiche tun würden Sie in synchronem Code tun:

try { 
    doSomething(); 
} catch(e){ 
    // explicitly ignore all errors. 
} 

mit dem Versprechen:

doSomething().catch(function(){}); // explicitly don't report rejection 
+2

Danke, das hat die meisten meiner Probleme gelöst. Wenn Sie jedoch "Alles anhalten" aktivieren, wird Chrome weiterhin angehalten, wenn "Bei Ausnahmen anhalten" aktiviert ist. –

+0

@MikaelSundberg dann ist das definitiv ein Fehler, ich werde einen Freund vom Devtools-Team kontaktieren und es sortiert bekommen. Vielen Dank. –

+0

https://code.google.com/p/chromium/issues/detail?can=2&q=promises%20devtools%20rejection&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Cr%20Status%20Owner%20Summary%20OS%20Modified&id = 535452 & thanks = 535452 & ts = 1443081694 –