Javascript 如何在nodejs中正确使用async和wait?

Javascript 如何在nodejs中正确使用async和wait?,javascript,node.js,asynchronous,async-await,Javascript,Node.js,Asynchronous,Async Await,当我运行console.log(f())时,我希望它返回来自getData(url)的数据,但它一直返回Promise{}。我认为使用await关键字可以解决这个问题,方法是让代码执行停止,直到getData()返回一些东西。我知道如果我使用f(),那么(console.log)它会工作得很好,但我不明白为什么console.log(f())不能工作。 有一种方法可以实现相同的结果f().then(console.log),但不使用then()函数 async function f() {

当我运行
console.log(f())
时,我希望它返回来自
getData(url)
的数据,但它一直返回
Promise{}
。我认为使用
await
关键字可以解决这个问题,方法是让代码执行停止,直到
getData()
返回一些东西。我知道如果我使用
f(),那么(console.log)
它会工作得很好,但我不明白为什么
console.log(f())
不能工作。 有一种方法可以实现相同的结果
f().then(console.log)
,但不使用
then()
函数

async function f() {
    const url = `https://stackoverflow.com`;
    let d = await getData(url);
    return d;
}

console.log(f());

如果不可能,您能解释一下原因吗?

async
wait
不会阻止函数异步

async
函数将始终返回承诺。它只解析为
返回的任何内容
,而不要求您使用该值调用
resolve
函数


async
函数中,您可以
等待
其他承诺。这个模拟了非异步代码,但它只是语法。它不允许你做任何你不能用
then()
做的事情,它只是给你一个更简单的语法

f
是一个异步函数,因此它仍然返回一个承诺

要等待此承诺得到解决,您需要等待它

(async () => console.log(await f())();
或者在长时间内:

async function run(){
   console.log(await f());
}
run();
“如果不可能,您能解释一下原因吗?”一个
async
函数总是返回一个承诺,因为它不知道它等待的事情何时完成。你不能在比萨饼送到之前吃它
async/await
不是阻塞,它只是提供了一种更好的处理异步代码的方法。请尝试
console.log(await f())