2015-03-29 17 views
12

Sto scrivendo un codice che usa pesantemente le promesse ECMAScript 6 in Javascript.La Promessa deve essere rifiutata con Errore o stringa?

Non riesco a decidere, se è più "corretto" rifiutare la promessa con una stringa o con un errore, poiché ho visto entrambi questi pattern in uso.

Cioè, se è meglio chiamare

return new Promise(response, reject) { 
    reject("Sky is falling."); 
} 

o

return new Promise(response, reject) { 
    reject(new Error("Sky is falling.")); 
} 
+1

Entrambi sono validi. L'importante è respingere una promessa con qualcosa di significativo. – brianvaughn

+1

Spero che sia comprensibile che il mio piccolo esempio sia solo per illustrazione e non un vero codice :) –

risposta

10

Uno sguardo alla documentazione di Mozilla è utile: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject

Promise.reject("Testing static reject").then(function(reason) { 
    // not called 
}, function(reason) { 
    console.log(reason); // "Testing static reject" 
}); 

Promise.reject(new Error("fail")).then(function(error) { 
    // not called 
}, function(error) { 
    console.log(error); // Stacktrace 
}); 

Essa mostra entrambe le stringhe e gli errori come valide "ragioni" per un rifiuto. La cosa principale (penso) è che la "ragione" dovrebbe essere significativa.

Se una traccia di stack è utile, potrebbe essere meglio fornire un errore. Se una semplice stringa è tutto ciò che è necessario, allora sarà sufficiente.

+0

La parte 'Testing static reject' manca ora sulla versione attuale della documentazione di Mozilla. C'è un rifiuto solo con l'oggetto 'Error'. – Martin

Problemi correlati