const ret = () => new Promise(resolve => setTimeout( () => resolve('somestring'), 1000));
async function wrapper() {
let someString = await ret();
return someString;
}
console.log( wrapper() );
It logs Promise { <pending> }
;
Why does it return a Promise instead of 'somestring'
?
I'm using the Babel ES7 preset to compile this.
Async functions return promises. In order to do what you want, try something like this
wrapper().then(someString => console.log(someString));
You can also await on wrapper()
like other promises from the context of another async function.
console.log(await wrapper());
if you want your async function to return a value immediatly you can use Promise.resolve(theValue)
async waitForSomething() {
const somevalue = await waitForSomethingElse()
console.log(somevalue)
return Promise.resolve(somevalue)
}
IMO the async await keywords need one more, resolve
it would be nice to write return resolve 'hello'
or just
resolve 'hello'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With