J'ai une fonction asynchrone. Et je veux créer un objet et la valeur des propriétés de l'objet est le retour de la fonction ASYNC. Mais maintenant, la valeur de la propriété est une promesse d'objet
mon code est comme celle-ci: p>
p>
const promise1 = new Promise(function(resolve, reject) { resolve('myvalue'); }); const a = async () => { var b = await promise1 return b; } const newobj = {'a': a()}; console.log(newobj) // the result is : {a: Promise {<resolved>: "myvalue"}} but i want {a: "myvalue"}
3 Réponses :
Vous devez do p> attendre code> votre fonction Async. Par conséquent,
a () code> retourne une promesse,
attendre un () code> est (sera) la valeur renvoyée par cette promesse. p> p>
Le problème ici est que vous ne pouvez utiliser que attendre code> à partir de inside i> an
async code> fonction.
Le problème avec votre code est vous affectant Une fonction ASYNC peut contenir une expression attendue qui pause l'exécution de la fonction ASYNC et attend la résolution de la promesse transmise, puis reprend l'exécution de la fonction ASYNC et renvoie la valeur résolue. Vous pouvez en savoir plus sur ici N'oubliez pas que le mot clé attendu n'est valable que dans les fonctions ASYNC. Si vous l'utilisez en dehors d'une fonction async de la fonction, vous obtiendrez une SyntaxError. P>
blockQuote> p> retour d'un code> (qui est une fonction asynchraine, il renvoie donc un
prometteur code>) sur
newobj.a Code>
(async() => {
const promise1 = new Promise(function(resolve, reject) {
resolve('myvalue');
});
const a = async() => {
var b = await promise1
return b;
}
const newobj = {
'a': await a()
};
console.log(newobj)
})();
Mon problème est que je veux retourner une valeur dans PrintData Cons Promise1 = nouvelle promesse (fonction (résolution, rejet) {résolution (myvalue ');}); const a = async () => {var b = attendre la promesse1 retour b; } const printData = async () => {const newobj = {'a': attendre un ()}; Retour NEWOBJ} PrintData ()
enveloppez tout dans une fonction d'async ife et attend ensuite à l'intérieur
@johnsonandriatiana J'ai ajouté la deuxième approche de la réponse.
Le problème ici est que fonctionnant a () em> retournera une promesse Voici une approche possible: p> p> const promise1 = new Promise(function(resolve, reject) {
resolve('myvalue');
});
const a = async () => {
var b = await promise1
return b;
}
const run = async () => {
const newobj = {'a': await a()};
console.log(newobj);
}
run()
Tu ne peux pas faire ça. Vous pouvez utiliser
.Chen () code> avec la promesse renvoyée et construire votre valeur dans le rappel.
Envelopper une promesse dans une fonction
async code> ne rend pas le résultat disponible de manière synchrone.