const ret = () => new Promise(resolve => setTimeout( () => resolve('somestring'), 1000));
async function wrapper() {
let someString = await ret();
return someString;
}
console.log( wrapper() );
Il enregistre Promise { <pending> }
; Pourquoi renvoie-t-il une promesse au lieu de 'somestring'
?
J'utilise le préréglage Babel ES7 pour compiler cela.
Les fonctions asynchrones renvoient des promesses. Pour faire ce que vous voulez, essayez quelque chose comme ça
wrapper().then(someString => console.log(someString));
Vous pouvez également attendre sur wrapper()
comme d'autres promesses dans le contexte d'une autre fonction asynchrone.
console.log(await wrapper());
si vous voulez que votre fonction asynchrone retourne une valeur immédiatement, vous pouvez utiliser Promise.resolve (theValue)
async waitForSomething() {
const somevalue = await waitForSomethingElse()
console.log(somevalue)
return Promise.resolve(somevalue)
}
OMI l'async attend les mots-clés ont besoin d'un de plus, résolvez
ce serait bien d'écrire retour résoudre "bonjour"
ou juste
resolve 'hello'