DanLevy.net

Pièges dans la documentation des Promesses

Éviter les problèmes de la documentation populaire

Hero image for Pièges dans la documentation des Promesses

Détection d’anti-modèles de Promises dans les résultats de recherche Google et les bibliothèques populaires.

craig-whitehead-433328-unsplash.webp

Je commence par une confession : je reconnais avoir moi-même écrit les mêmes « anti-modèles » que je critique ci-dessous, tout comme je suis certain que de nombreux développeurs JavaScript l’ont également fait. Rien de ce que j’ai exposé ici n’est personnel, ni même destiné aux auteurs originaux. Je réalise simplement un code review sur des modèles courants - j’espère transmettre une compréhension de mes priorités et de mon processus de réflexion critique.

J’espère que vous serez capable de repérer les signes avant-coureurs de mauvaises Promises après avoir étudié ce projet.

  1. CallbackHell.com
  2. StrongLoop
  3. RisingStack
  4. Bibliothèque Q

CallbackHell.com

CRÉDIT : http://callbackhell.com/ CallbackHell.com


StrongLoop

CRÉDIT : https://strongloop.com/strongblog/node-js-callback-hell-promises-generators/ strong loop


RisingStack

CRÉDIT : https://blog.risingstack.com/node-js-async-best-practices-avoiding-callback-hell-node-js-at-scale/ Cet article est assez solide. J’ai toutefois une seule préoccupation :

Rising Stack


Bibliothèque Q

CRÉDIT : https://github.com/kriskowal/q

La bibliothèque Q est l’une des plus anciennes et des plus utilisées associée aux « Promises ». En conséquence, elle souffre d’exemples vieillissants et d’une nécessité de maintenir la compatibilité descendante. Je dis « associée aux “Promises” » puisque je considère que Q est en réalité axée sur le modèle deferred.

Cela peut ressembler à des Promises, mais je persiste à dire que ce n’en sont pas. Elle présente une surface d’attaque bien trop grande pour les mauvaises raisons. De plus, la convention de nommage abbrevie de manière incohérente les noms, rendant plus difficile la mémorisation de l’interface. Les méthodes comme when et done ne sont pas nécessaires.

En résumé : le modèle deferred est un anti-modèle douloureux — il n’améliore presque rien par rapport à l’approche classique des callbacks.

q first example

q xmlHTTP deferred anti-pattern

Veuillez consulter (& étoiler) le projet Github compagnon de cet article, Escape From Callback Mountain

Objectif du projet : recherche et développement de meilleurs modèles de langage fonctionnel en JavaScript.