我正在学习JavaScript,我遇到了JS片段。我不明白它是如何工作的
let hello = () => Promise.resolve("Hello")
async function fun() {
console.log("Inside")
const result = await hello()
console.log(result)
}
console.log("Start")
fun()
console.log("End")
字符串
控制台中的结果
Start
Inside
End
Hello
型
我不明白为什么在Hello之前打印End,尽管使用了await关键字。我想知道这个片段在事件循环中是如何工作的。更具体地说,当fun()被推入调用堆栈时会发生什么。
2条答案
按热度按时间6tr1vspr1#
在您的代码中,只有
hello
作为dec函数工作。你将
fun
函数定义为await
函数,但id不起作用,因为当你使用fun
时,你没有使用await
。我在下面添加代码。
字符串
nvbavucw2#
在
JavaScript
中,当一个异步函数被调用时,它不会阻止后续代码的执行。async
函数中的await
关键字会导致该函数暂停并等待,但它不会阻止async
函数之外的其他代码的执行。这就是为什么 “End” 会打印在 “Hello” 之前。