2017-10-01 1 views
-3

Disons que j'ai une fonction synchrone, foo(), qui retourne un résultat. Est-il une différence significative si jeMeilleure façon de créer une Promesse à partir d'un code synchrone?

return Promise.resolve(foo()); // code runs within Promise.resolve 

contre

var result = foo();    // code runs outside of any Promise stuff 
return Promise.resolve(result); 
+0

De toute évidence, j'appuie sur le mauvais bouton avant de répondre à la question. Les gars, 4 downvotes en 3 minutes pour ça? – user949300

+1

Notez que 'Promise.resolve' est lui-même juste une autre fonction synchrone, et cela ne fait aucune différence quelles que soient les fonctions que vous appelez ici avec ou sans une variable intermédiaire. Je suppose que vous avez un malentendu sévère des promesses, pouvez-vous préciser ce que vous entendez par "* code s'exécute dans Promise.resolve *"? – Bergi

+0

@ Bergi ne dirais pas que je _misunderstand_ Promesses, juste un manque de compréhension de certaines des subtilités. :-) Votre réponse est excellente, en soulignant que 'Promise.resolve()' est _itself synchrone_ clarifie vraiment les choses. Vous pourriez vouloir faire une "vraie" réponse. – user949300

Répondre

0

-t-il une différence significative

n °

Dans un cas, vous enregistrez le résultat de foo() à une variable. Cela peut être utile si vous avez besoin de l'utiliser pour quelque chose d'autre, ou si la nature multiligne et la variable nommée facilitent la compréhension d'un code compliqué. Dans l'autre cas, foo() génère toujours une valeur de retour, vous n'enregistrez tout simplement pas de référence. Si vous n'avez pas besoin de l'utiliser ailleurs, et que vous pensez que le code est compréhensible par lui-même, tout va bien aussi.