2015-09-24 5 views
5

Jeśli mam narzędzia programistyczne widoczne w przeglądarce Chrome, a obietnica jest odrzucana, to Chrome zatrzymuje wykonywanie kodu javascript, wyświetlając komunikat "Wstrzymanie przy odrzuceniu obietnicy". Czy mogę w pewien sposób zapobiec wstrzymaniu Chrome w tym przypadku (i nadal mam otwarte devtools)?Czy mogę zapobiec temu, że Chrome (wersja v45) zatrzymuje się przy obietnicach odrzucenia?

Odrzucone obietnice są częścią "normalnego" przepływu w mojej aplikacji i niewygodne jest naciskanie przycisku wznowienia w przeglądarce Chrome za każdym razem, gdy się to stanie.

Można przetestować ten problem w Chrome przez wpisując w konsoli JS-:

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

Dzięki.

Odpowiedz

12

Chrome robi to tylko wtedy, gdy w zakładce "Źródła" włączono opcję "wstrzymaj nieprzerwany wyjątek".

enter image description here

Jeśli to odznacz to nie zatrzyma się na błędach.

Odrzucenie obietnicy jest koncepcyjnie błąd. To jest poprawny sposób, aby go modelować mentalnie, w przeciwnym razie następujące są ciche błędy:

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

I tak dalej.

Jeśli chcesz wyraźnie stłumić odrzucenia, która jest zbliżona do synchronicznego "catch all" chcesz zrobić to samo możesz zrobić w kodzie synchronicznym:

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

obietnicami:

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

Dzięki, że rozwiązałem większość moich kłopotów. Ale Twoje "catch all" nadal powoduje wstrzymanie Chrome, jeśli aktywne jest "Wstrzymaj wyjątki". –

+0

@MikaelSundberg to zdecydowanie błąd, skontaktuję się z przyjacielem z zespołu devtools i otrzymam posortowane. Dzięki. –

+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 i dzięki = 535452 & ts = 1443081694 –

Powiązane problemy