web-dev-qa-db-fra.com

Convention de nommage JavaScript pour les promesses?

Je pense qu’il serait utile d’avoir une convention de nommage pour les variables JavaScript contenant un promise . En général, je n’aime pas ou ne préconise pas les conventions de nommage au-delà des normes de langage de programmation, mais dans le style de programmation où les promesses sont transmises comme des arguments de fonction, il est souvent difficile de dire en un coup d’œil si une variable tient une promesse ou la "vraie chose".

J'ai personnellement utilisé promiseOfFoo et pFoo, mais je trouve le premier un peu bavard, et le dernier me donne des flashbacks en hongrois.

Existe-t-il une convention couramment utilisée?

49
jevakallio

Cela dépend plus de la façon dont vous allez les utiliser, n'est-ce pas?

Si votre code ressemble à:

var imageLoading = loadImage(url); // returns promise
imageLoading.done(showImage);

// imageLoading.done
// imageLoading.error
// imageLoading.then
// imageLoading.success
// imageLoading.fail
// ... whatever your library supports

Ensuite, je pourrais suggérer de nommer la promesse comme un verbe au présent ...

MAIS si vous construisez une bibliothèque qui dépend d'objets différés

// accepts a promise
var showImage = function (promise) {
    promise.done(function (img) { /* ...... */ });
};

Il n’ya alors rien de mal à nommer la variable en tant que nom, tant que l’on comprend quelles méthodes prennent des promesses et lesquelles ne le font pas.

var image = loadImage(url); // returns promise
showImage(image);           // acts on promise

Maintenant, vos interfaces sont vraiment propres et vous pouvez écrire du code qui a une apparence procédurale. Mais bon, vous devez savoir quelles fonctions/méthodes utilisent des promesses et quels objets utilisent.

Si vous passez des promesses en tant que rappels, à l’intérieur de méthodes d’objet, vous pouvez les nommer avec plaisir promise ou tweetLoading ou dataParsing ou à quoi que ce soit ayant un sens dans le contexte de cette situation particulière.

Pour la définition de showImage, le paramètre que j'ai choisi est carrément appelé promise. Ainsi, si vous travaillez sur cette fonction ou si vous avez besoin de déboguer une chaîne de données, vous pourrez voir à la seconde où vous l'avez examinée qu'elle a pris un objet de promesse.

17
Norguard

Je ne connais pas de convention publique, mais j'ai utilisé les éléments suivants dans mon propre code:

  • var dfrd: un objet différé (je ne me souviens pas d'avoir eu besoin de deux ou plus dans la même portée)
  • var p: une promesse
  • var p_foo: une des promesses nommées
  • var promises: un tableau ou un objet brut contenant des promesses

L'exception est un objet jqXHR, que je nommerai var jqXHR (encore une fois, je ne me souviens pas d'avoir eu besoin de deux ou plus dans la même portée).

0
Beetroot-Beetroot