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'