J'affiche en console le résultat de cette promise de la manière suivante :
var myVar:
function callback() {
console.log(myVar);
}
connect.then(result => {setTimeout(function() {
myVar = result;
callback();
}, 0)})
console.log(myVar);
J'ai donc une fonction callback dans un then().
Dans la fonction callback(), le résultat du console.log(myVar); fonctionne très bien.
Seulement, ce qui m'importe c'est d'extraire le résultat dans une nouvelle variable 'myVar'.
Dans le cas suivant, le denier console.log(myVar); renvoie 'undefined'.
Je ne vois vraiment pas comment faire et il m'est important d'externaliser le résultat dans une nouvelle variable pour l'envoyer à la vue res.render().
En précisant que je travaille sur nodeJs avec Express.
Il est normal que console.log(myVar) renvoie undefined. Les promesses sont asynchrones, et ta ligne myVar = result; dans la promesse sera tout le temps (ou presque) exécutée après la dernière ligne de ton code.
Tu n'as pas moyen de garantir que myVar ne sera pas undefined en dehors de la closure de la promesse. Si cela te pose pb dans l'architecture de ton code, c'est qu'elle n'est pas bonne. Ton res.render() devrait s’exécuter dans le callback de la promesse, d'une manière ou une autre, sinon cela n'a pas de sens.
Une autre solution serait d'utiliser async/await, peut être cela te perturbera moins même s'il ne s'agit que de sucre syntaxique.
EDIT : pourquoi un setTimeout? C'est inutile.
- Edité par SpaceIn 24 avril 2018 à 10:36:35
Problème avec les promises en javascript
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.