admin 管理员组

文章数量: 1086019

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

本文标签:

Error[2]: Invalid argument supplied for foreach(), File: /www/wwwroot/roclinux.cn/tmp/view_template_quzhiwa_htm_read.htm, Line: 58
File: /www/wwwroot/roclinux.cn/tmp/route_read.php, Line: 205, include(/www/wwwroot/roclinux.cn/tmp/view_template_quzhiwa_htm_read.htm)
File: /www/wwwroot/roclinux.cn/tmp/index.inc.php, Line: 129, include(/www/wwwroot/roclinux.cn/tmp/route_read.php)
File: /www/wwwroot/roclinux.cn/index.php, Line: 29, include(/www/wwwroot/roclinux.cn/tmp/index.inc.php)