从非异步函数中调用异步函数
我们有一个名为 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();