在JS的执行上下文中,这个JavaScript函数片段是如何工作的?

6tqwzwtp  于 2023-11-15  发布在  Java
关注(0)|答案(2)|浏览(141)

我正在学习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()被推入调用堆栈时会发生什么。

6tr1vspr

6tr1vspr1#

在您的代码中,只有hello作为dec函数工作。
你将fun函数定义为await函数,但id不起作用,因为当你使用fun时,你没有使用await
我在下面添加代码。

let hello = () => Promise.resolve("Hello");

async function fun() {
  console.log("Inside");
  const result = await hello();
  console.log(result);
}

const main = async () => {
  console.log("Start");
  await fun();
  console.log("End");
};
main();

字符串

nvbavucw

nvbavucw2#

JavaScript中,当一个异步函数被调用时,它不会阻止后续代码的执行。async函数中的await关键字会导致该函数暂停并等待,但它不会阻止async函数之外的其他代码的执行。这就是为什么 “End” 会打印在 “Hello” 之前。

相关问题