const ret = () => new Promise(resolve => setTimeout( () => resolve('somestring'), 1000)); async function wrapper() { let someString = await ret(); return someString; } console.log( wrapper() );
registra Promise { <pending> }
; Perché restituisce una Promessa invece di 'somestring'
?
sto usando il preset Babel ES7 per compilarlo.
En title : Returning an awaited value returns a Promise? (es7 async/await)
console.log(someString)
all'interno della funzionewrapper()
o all'interno di qualsiasi altra funzioneasync
, si otterrà il valoresomestring
.someString
subito dopo l'attesa di output il valore corretto?le funzioni asincrone restituiscono le promesse. per fare quello che vuoi, prova qualcosa di simile
si può anche attendere su
wrapper()
come altre promesse dal contesto di un'altra funzione async.await
per esso. il risultato dell'esecuzione delle funzioni asincrone è sempre una promessa. potete aspettarlo se siete all'interno di un'altra funzione async o disavvolgere il risultato con.then(...)
se non siete.async/await
non fa parte di ES7.se vuoi che la tua funzione async restituisca immediatamente un valore puoi usare Promise.resolve (thevalue)
IMO l'asincrono attendere parole chiave bisogno di un altro, risolvere
sarebbe bello scrivere il ritorno risolvere 'ciao'
o semplicemente o semplicemente
resolve 'hello'
sembra coffeeshop