Maison  >  Article  >  interface Web  >  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 ?

DDD
DDDoriginal
2024-11-13 00:33:02396parcourir

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, c'est typiquement un no-op.

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 pipeline des promesses.

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 l'omettre :

  • Nouvelle instance de promesse : .then () crée une nouvelle instance de promesse, tout en l'omettant, réutilise l'original. 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 accomplissement, .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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn