I'm curious how the async/await syntax is converted to Promise
s. Maybe I'm just not thinking about it properly, but I don't know how this code would be converted to a Promise:
async function myFunc(doAwait) {
doSomething();
if (doAwait) {
await doSomethingAsync();
}
return doSomethingElse();
}
When doAwait
is false
, I'd expect this function to run equivalent to:
return new Promise(res => {
doSomething();
res(doSomethingElse());
});
If it's true
, it would be:
return new Promise(() => { doSomething(); })
.then(() => doSomethingAsync())
.then(() => doSomethingElse());
It could do something like:
let p = new Promise(() => { doSomething(); });
if (doAwait) {
p = p.then(() => doSomethingAsync());
}
return p.then(() => doSomethingElse());
But that introduces an extra, possibly unnecessary then
. Maybe that's just unavoidable.