Ho guardato le promesse bluebird e come promise.try differisce da un promettente.resolve.quindi quando viene generato un errore. In primo luogo un certo codice usando promise.try dove si genera un errore sincronopromise.try vs promise.resolve gestione degli errori
Promise.try(function() {
throw new Error('error');
}).catch(function(e) {
console.log(e);
});
secondo un codice che getta un errore sincrono sulla determinazione
Promise.resolve().then(function() {
throw new Error('error');
}).catch(function(e) {
console.log(e);
});
Per quanto ne sono consapevole che entrambi si comportano allo stesso. La promessa è essenzialmente un modo più pulito per risolvere la promessa?
La documentazione dice promise.try:
sarà catturare tutti gli errori nei gestori loro promessa .catch invece di dover gestire flussi sia eccezione sincrona e asincrona.
Nel caso dell'esempio dato nei documenti:
function getUserById(id) {
return Promise.try(function() {
if (typeof id !== "number") {
throw new Error("id must be a number");
}
return db.getUserById(id);
});
}
se l'errore sincrono viene generata verrà mai raggiunto il codice asincrono. Ci sarebbe qualche differenza se si inserisce il codice sopra in un promise.resolve(). Then (..)?
Qualsiasi chiarimento/esempi di promise.try saranno molto apprezzati.