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