最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - If I define an async function and use await in the body, do I need to use await when calling the function? - Stack

programmeradmin2浏览0评论

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 use await. – Lux Commented Jun 4, 2021 at 20:36
  • 2 Then...you have to await it. That's what await does. – VLAZ Commented Jun 4, 2021 at 20:36
  • An async function always returns a promise, regardless whether you use await in the body or not, and yes you will need to await (or return) that promise. – Bergi Commented Jun 4, 2021 at 21:09
Add a ment  | 

2 Answers 2

Reset to default 7

It'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()
})();

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论