Javascript 异步函数不';Don’不要等着再回来
考虑以下代码:Javascript 异步函数不';Don’不要等着再回来,javascript,async-await,Javascript,Async Await,考虑以下代码: const getName=()=> 新承诺(resolve=>setTimeout(resolve,1000,'xxx'); f=async()=>{ 让name=等待getName(); console.log(名称); 返回名称; } console.log(f())您需要等待f函数返回的承诺。这就是为什么印刷的是承诺而不是结果 console.log(await f()); 您需要等待f函数返回的承诺。这就是为什么印刷的是承诺而不是结果 console.log(awa
const getName=()=>
新承诺(resolve=>setTimeout(resolve,1000,'xxx');
f=async()=>{
让name=等待getName();
console.log(名称);
返回名称;
}
console.log(f())代码>您需要等待f函数返回的承诺。这就是为什么印刷的是承诺而不是结果
console.log(await f());
您需要等待f函数返回的承诺。这就是为什么印刷的是承诺而不是结果
console.log(await f());
您需要等待f()
。以下是一个例子:
const getName=()=>
新承诺(resolve=>setTimeout(resolve,1000,'xxx');
常量f=async()=>{
const name=等待getName();
console.log(“1.”+名称);
返回名称;
}
常量运行=(异步()=>{
const ret=等待f();
控制台日志(“2.”+ret);
})();
您需要等待等待f()
。以下是一个例子:
const getName=()=>
新承诺(resolve=>setTimeout(resolve,1000,'xxx');
常量f=async()=>{
const name=等待getName();
console.log(“1.”+名称);
返回名称;
}
常量运行=(异步()=>{
const ret=等待f();
控制台日志(“2.”+ret);
})();代码>这是否回答了您的问题?您没有等待f()getName没有返回anything@Nonik也就是说,没有花括号的箭头函数隐式返回表达式。“但它仍然返回承诺而不是结果”-异步函数总是返回承诺,它们从不直接返回“结果”。由消费者(调用函数的地方)来等待承诺。这是否回答了您的问题?您没有等待f()getName没有返回anything@Nonik也就是说,没有花括号的箭头函数隐式返回表达式。“但它仍然返回承诺而不是结果”-异步函数总是返回承诺,它们从不直接返回“结果”。这取决于消费者(调用函数的地方)是否等待承诺,但事实并非如此compile@GeneralGravicius:如果这是在顶层(在async
函数之外),那么您可以执行如下操作:f()。然后(x=>console.log(x))
await
关键字在异步函数之外不起作用,因此您应该使用回调语法。(或者用异步IIFE封装。)@David谢谢,我最终使用了一个异步IIFET,但实际上没有compile@GeneralGravicius:如果这是在顶层(在async
函数之外),那么您可以执行如下操作:f()。然后(x=>console.log(x))
await
关键字在异步函数之外不起作用,因此您应该使用回调语法。(或者将其包装在异步IIFE中。)@David谢谢,我最终使用了异步IIFE