J'ai une spécification d'un client pour l'implémentation d'une méthode dans un module:
// getGenres():
// Returns a promise. When it resolves, it returns an array.
Si donné un éventail de genres,
['comedy', 'drama', 'action']
Voici une méthode squelette avec une promesse:
MovieLibrary.getGenres = function() {
var promise = new Promise(function(resolve, reject) {
/* missing implementation */
});
return promise;
};
Peut-on faire la promesse de retourner les données trouvées dans les genres? Existe-t-il un meilleur moyen de réaliser la description?
javascript
joint d'étanchéité
la source
la source
resolve([genre1, genre2, ...]);
dans la mise en œuvre de la promesse.Réponses:
On dirait que vous ne comprenez pas comment les promesses sont utilisées. Vous retournez une promesse. Puis, plus tard, lorsque votre code résout la promesse, il le résout avec un résultat et ce résultat est transmis au
.then()
gestionnaire associé à la promesse:la source
Version mise à jour utilisant
await
plutôt que.then()
.await
arrête l'exécution jusqu'à ce que la promesse soit résolue (c'est-à-dire qu'elle a une valeur). Contrairement à l'utilisation,.then()
vous pouvez simplement conserverawait
les valeurs lorsque vous exécutez diverses fonctions qui renvoient des promesses. L'exécution se poursuit sur la ligne suivante (c'est ce qu'on appelle le style direct). C'est aussi beaucoup plus agréable à regarder, car il est cohérent avec le reste de JavaScript, plutôt que.then()
partout.Await est pris en charge par tous les navigateurs et nœuds actuels.
la source