J'ai une fonction javascript dans laquelle je veux renvoyer la valeur obtenue après la méthode de retour. Plus facile à voir qu'à expliquer
function getValue(file){
var val;
lookupValue(file).then(function(res){
val = res.val;
}
return val;
}
Quelle est la meilleure façon de faire cela avec une promesse. Si je comprends bien, le return val
retournera avant que lookupValue ait terminé, mais je ne peux pas return res.val
comme cela ne fait que revenir de la fonction interne.
Utilisez un motif suivant ces lignes:
function getValue(file) {
return lookupValue(file);
}
getValue('myFile.txt').then(function(res) {
// do whatever with res here
});
(Bien que cela soit un peu redondant, je suis sûr que votre code actuel est plus compliqué)
La meilleure façon de le faire serait d'utiliser la fonction de retour de promesse telle qu'elle est, comme ceci
lookupValue(file).then(function(res) {
// Write the code which depends on the `res.val`, here
});
La fonction qui appelle une fonction asynchrone ne peut pas attendre que la fonction asynchrone retourne une valeur. En effet, il appelle simplement la fonction asynchrone et exécute le reste du code qu'il contient. Ainsi, lorsqu'une fonction asynchrone retourne une valeur, elle ne sera pas reçue par la même fonction qui l'a invoquée.
Ainsi, l’idée générale est d’écrire le code qui dépend de la valeur de retour d’une fonction async, dans la fonction async elle-même.