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 ?
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 :
Edge Cases
Dans de rares situations, .then(function(a){ return a; }) peut avoir des comportements inhabituels :
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!