an example:
async doSomething() {
await asyncCall();
}
Do I need to use await
when I call my doSomething
function?
await doSomething();
or is this fine?
doSomething();
an example:
async doSomething() {
await asyncCall();
}
Do I need to use await
when I call my doSomething
function?
await doSomething();
or is this fine?
doSomething();
Share
Improve this question
asked Jun 4, 2021 at 20:34
avokevdoavokevdo
1195 bronze badges
5
-
1
Do you want to wait for
doSomething()
to finish or not? Do you want to handle any errors it might throw? – VLAZ Commented Jun 4, 2021 at 20:35 -
@VLAZ Yes, I do want to wait for
doSomething()
to finish – avokevdo Commented Jun 4, 2021 at 20:36 -
then you need
await
. if you want to run it in the background and not wait you dont useawait
. – Lux Commented Jun 4, 2021 at 20:36 -
2
Then...you have to
await
it. That's whatawait
does. – VLAZ Commented Jun 4, 2021 at 20:36 -
An
async function
always returns a promise, regardless whether you useawait
in the body or not, and yes you will need toawait
(orreturn
) that promise. – Bergi Commented Jun 4, 2021 at 21:09
2 Answers
Reset to default 7It's important to understand that async/await is really just "sugar" on top of Promises. In other words, doSomething
still returns a Promise
(you can't use async await to get away from this fact!). So, to answer your question, you still need to use await
(or chain a then
call) to handle the eventual resolved or rejected Promise value.
In your example, doSomething()
returns a Promise. For you to return the data from an async function, you need to resolve or reject the promise.
When you do:
await doSomething();
doSomething()
will wait for asyncCall()
to be resolved.
When you do:
doSomething();
doSomething()
will resolve asyncCall()
in the background.
I think your confusion es from the fact that await is only valid in async functions in javascript. If you want to run await doSomething()
outside a async function, just wrap it around an anonymous async function like:
(async() => {
await doSomething()
})();