Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步函数不';Don’不要等着再回来_Javascript_Async Await - Fatal编程技术网

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