Maison  >  Article  >  interface Web  >  Est-ce que ".then(function(a){ return a; })" fait réellement quelque chose pour les promesses ?

Est-ce que ".then(function(a){ return a; })" fait réellement quelque chose pour les promesses ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-10 14:58:03536parcourir

Does

Est-ce que ".then(function(a){ return a; })" a un effet sur les promesses ?

Lorsque vous travaillez avec les promesses Bluebird dans Bookshelf, les développeurs ont souvent utilisez un modèle similaire à celui ci-dessous :

var getEvents = function(participantId) {
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true})
    .then(function(model) {
      return model;
    });
};

Cependant, ce code soulève des questions pour ceux qui ne sont pas familiers avec les promesses. La fonction then a-t-elle un impact significatif sur le comportement global du code ? L'implémentation suivante pourrait-elle obtenir le même résultat sans elle ?

var getEvents = function(participantId) {
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true});
};

Résoudre le mystère

Le nœud du problème réside dans le paramètre de fonction transmis à then. Cet argument est censé recevoir la valeur de retour de la promesse précédente dans la chaîne. Ainsi, il apparaît que le retour a ; La déclaration dans la fonction then est essentiellement sans opération, car elle passe simplement par l'argument reçu inchangé.

Pourquoi conserver la fonction Then() ?

Malgré son apparente redondance, la fonction then sert un objectif dans certains cas d’utilisation. Un exemple est lorsque la promesse renvoyée doit être traitée différemment tout au long de la chaîne. Par exemple, il peut être enregistré, converti en JSON ou géré de manière personnalisée. Un autre avantage est que la fonction then permet la gestion des erreurs, bien que cela puisse également être réalisé via done, en fonction de la bibliothèque de promesses utilisée.

Bonnes pratiques

En général, il est conseillé de uniquement utilisez-le lorsque cela est réellement nécessaire. Des fonctions inutiles peuvent alors ajouter une complexité inutile à la base de code et augmenter le risque d'erreurs. En règle générale, n'incorporez alors que lorsque le résultat ou l'erreur de la promesse renvoyée doit être explicitement modifié ou traité.

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