Sto scrivendo del codice JS che usa le promesse. Ad esempio, apro un modulo pop-up e restituisco un oggetto jQuery Deferred. Funziona in questo modo:Quando dovrei rifiutare una promessa?
Se l'utente fa clic su OK sul modulo, e convalida, le risolve differite per un oggetto che rappresenta i dati del modulo.
Se l'utente fa clic su Annulla, il rinviato si risolve in un valore nullo.
Quello che sto cercando di decidere si dovrebbe la differita invece respingere, invece di risolvere? Più in generale, mi chiedo quando dovrei risolvere qualcosa di simile a un oggetto nullo e quando dovrei rifiutare?
Ecco alcuni codice che illustrano le due posizioni:
// Resolve with null.
var promise = form.open()
.done(function (result) {
if (result) {
// Do something with result.
} else {
// Log lack of result.
}
});
// Reject.
var promise = form.open()
.done(function (result) {
// Do something with result.
})
.fail(function() {
// Log lack of result.
});
Sembra una decisione di progettazione perfettamente valida in entrambi i casi. –
Non penso che un metodo sia migliore dell'altro, ma di solito associo "fail" a qualcosa che non va, come un'eccezione piuttosto che un valore scelto, cioè l'incapacità di essere in grado di mantenere la promessa anziché completare la promessa con un certo valore. –
@ExplosionPills Sì, è quello che sto cercando di ottenere. Quindi dovrei trattare un rifiuto di promessa come la stessa gravità di un'eccezione? – cdmckay