"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Est-ce que .then(function(a){ return a; }) est un No-Op pour les promesses ?

Est-ce que .then(function(a){ return a; }) est un No-Op pour les promesses ?

Publié le 2024-11-16
Parcourir:705

Is .then(function(a){ return a; }) a No-Op for Promises?

Est-ce que .then(function(a){ return a; }) est un No-Op pour les promesses ?

Dans le domaine des promesses , la question de savoir si .then(function(a){ return a; }) est une non-opération s'est posée. Faisons la lumière sur cette curieuse requête :

Oui, il s'agit généralement d'une non-opération.

Le code en question reçoit la valeur de retour de la promesse précédente dans le chaîne via la fonction passée à .then(). Cependant, si cette fonction renvoie simplement l'entrée a, elle contourne effectivement tout traitement ou transformation du résultat de la promesse. Cela en fait une étape supplémentaire inoffensive mais inutile dans le processus de promesse.

Pourquoi a-t-il été écrit de cette façon ?

Il s'agit probablement d'une faute de frappe ou d'une relique d'idées fausses antérieures sur des promesses. Lorsque les promesses ont été introduites, certains développeurs pensaient à tort que .then() devait renvoyer une promesse pour continuer la chaîne. En conséquence, ils ont ajouté cet appel .then() superflu pour garantir que la valeur renvoyée restait toujours une promesse, même si elle était identique à l'entrée.

Différence entre Returning .then() et L'omettre

Bien que sémantiquement équivalent, il existe des différences subtiles entre renvoyer .then() et omettre it:

  • Nouvelle instance de promesse : .then() crée une nouvelle instance de promesse, tout en l'omettant, réutilise l'originale. Cependant, cette distinction n'est généralement pas pertinente.
  • Vérification de la validité : Avec .then(), la valeur renvoyée est vérifiée pour déterminer s'il s'agit d'une promesse ou non. L'omission de .then() ignore cette vérification.

Edge Cases

Dans de rares situations, .then(function(a){ return a; }) peut avoir des comportements inhabituels :

  • Si la valeur renvoyée devient soudainement une promesse après son exécution, .then() l'attendra.
  • Il renvoie un objet de promesse distinct, qui pourrait être utile pour partager l’évitement. Cependant, il s'agit d'un cas d'utilisation de niche.

Conclusion

En général, .then(function(a){ return a; }) est un non -op qui n'ajoute aucune valeur à une chaîne de promesses. Il doit être omis sauf s'il existe une raison impérieuse de l'utiliser, comme éviter les promesses partagées ou gérer des comportements obscurs liés à Thenable.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3