@breakingthings's promise advice
success
/error
are not promise flow. They're pseudopromise demons. Usethen
andcatch
instead.$q.defer
is satan. You should basically never use it. There is an alternative syntax that is superior,$q(function(resolve, reject) {})
but chances are that what you’re working with already returns a promise, and if it does there is absolutely no need for either of these.- Don’t use the
promiseFn().then(successFn, errorFn)
pattern, as errorFn will only catch errors caused by promiseFn, but not by successFn. Usethen(successFn).catch(errorFn)
instead. Also note that you can chain several thenables and catch all of them this way, alathen(a).then(b).then(c).catch(errorFn)
, in which errorFn will handle errors that happen for any of a, b, or c. - Whatever you
return
from a then-able is turned into a resolving promise. Whatever youthrow
is turned into a rejecting one. For instance, `.catch