2015-09-24 9 views
5

Se sono visibili gli strumenti per sviluppatori in Chrome e una Promessa viene respinta, Chrome mette in pausa l'esecuzione di JavaScript con il messaggio "In pausa con rifiuto di promessa". Posso in qualche modo impedire a Chrome di mettere in pausa in questo caso (e ho ancora gli sviluppatori aperti)?Posso impedire che Chrome (v45) si interrompa in caso di rifiuto di promessa?

Le promesse rifiutate fanno parte del flusso "normale" nella mia applicazione ed è scomodo premere il pulsante Riprendi in Chrome ogni volta che accade.

È possibile verificare questo comportamento in Chrome immettendo quanto segue nella js-console:

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

Grazie.

risposta

12

Chrome lo fa solo se è attiva la "pausa sull'eccezione non rilevata" nella scheda "Sorgenti".

enter image description here

Se deselezioni che non farà una pausa in caso di errori.

Una promessa di rifiuto è concettualmente un errore. È il modo corretto di modellarlo mentalmente, altrimenti i seguenti sono errori silenziosi:

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

E così via.

Se si desidera eliminare in modo esplicito un rifiuto, che è simile a un sincrono "catch all" che avresti fatto la stessa cosa che si fa in codice sincrono:

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

Con promesse:

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

Grazie, ho risolto la maggior parte dei miei problemi. Ma il tuo "catch all" fa ancora in modo che Chrome si interrompa se "Pause on exceptions" è attivo. –

+0

@ MikaelSundberg quindi è sicuramente un bug, mi metterò in contatto con un amico del team di devtools e lo sistemerò. Grazie. –

+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 –

Problemi correlati