Quand est .ensuite(réussite, échec) considéré comme un antipattern pour des promesses?

J'ai eu un coup d'oeil à la bluebird promesse FAQ, dans lequel il mentionne que .ensuite(réussite, échec) est un antipattern. Je n'ai pas très bien compris son explication pour le try et catch.
Quel est le problème avec ce la suite?

some_promise_call()
.then(function(res) { logger.log(res) }, function(err) { logger.log(err) })

Il semble que l'exemple est ce qui suggère ce qui suit comme correctement façon.

some_promise_call()
.then(function(res) { logger.log(res) })
.catch(function(err) { logger.log(err) })

Quelle est la différence?

  • then().catch() est plus lisible, que vous n'avez pas besoin de la recherche pour la virgule et enquêter sur ce rappel de la réussite ou de l'échec de la branche.
  • Il y a beaucoup de différence, cochez les réponses
  • dévastée par les regards de meilleur argument. Totalement faux!
  • si vous voyez "regarde mieux"?. Merci de lire la réponse suivante et ce qui est plus lisible .then(function(res) { logger.log(res) }, function(err) { logger.log(err) }) ou .then(function(res) { logger.log(res) }).catch( function(err) { logger.log(err) })
  • REMARQUE: Lorsque vous utilisez .catch, vous ne savez pas quelle étape est la cause du problème - à l'intérieur de la dernière then ou quelque part d'autre jusqu'à la promesse de la chaîne. Donc, il possède son propre désavantage.
  • J'ai toujours ajouter des noms de fonction à la promesse .alors() params pour le rendre lisible, c'est à dire some_promise_call() .then(function fulfilled(res) { logger.log(res) }, function rejected(err) { logger.log(err) })

InformationsquelleAutor user2127480 | 2014-07-09