返回课程

从非异步函数中调用异步函数

我们有一个名为 f 的“普通”函数。如何在 f 中调用 async 函数 wait() 并使用它的结果?

async function wait() {
  await new Promise(resolve => setTimeout(resolve, 1000));

  return 10;
}

function f() {
  // ...what should you write here?
  // we need to call async wait() and wait to get 10
  // remember, we can't use "await"
}

附注:从技术上讲,这个任务非常简单,但对于刚接触 async/await 的开发者来说,这个问题很常见。

了解内部机制有助于解决问题。

async 调用视为 promise,并附加 .then 到它

async function wait() {
  await new Promise(resolve => setTimeout(resolve, 1000));

  return 10;
}

function f() {
  // shows 10 after 1 second
  wait().then(result => alert(result));
}

f();