javascript - 为什么 2 和 4 在 b 之前打印?

标签 javascript node.js concurrency async-await v8

function first() {
  return new Promise(resolve => {
    console.log(2);
    resolve(3);
    console.log(4);
  });
}

async function f() {
  console.log(1);
  let r = await first();
  console.log(r);
  console.log(99);
}

console.log('a');
f();
console.log('b');

上面的代码显示了以下结果:

a
1
2
4
b
3
99

根据我的理解,当编译器命中await first()时函数,它会插入 first()函数执行到事件队列并暂停 f() 的执行,继续执行f()之后的所有内容。所以执行顺序应该是:

a
1
b
2
4
3
99

看来我理解错了。谁能向我解释一下这到底是如何运作的?

最佳答案

enter image description here

enter image description here

如果你不明白,请留言。 谢谢。

关于javascript - 为什么 2 和 4 在 b 之前打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57139161/

相关文章:

javascript - 调整浏览器屏幕的两半

javascript - 雅格斯 : access processed argv in fail function

javascript - 错误 : Loading chunk 0 failed. - webpack 尝试加载 0.js

java - 如何在Java中声明Callable来执行返回void的函数?

C - 并发问题

javascript - 将 PHP Post API 脚本转换为 jQuery API 调用

javascript - jQuery 不能在我的电脑上运行

javascript - 周突出显示在鼠标悬停时无法正常工作

javascript - 无法读取二维数组的 for 循环中未定义的属性 'length'

http - Golang HTTP 服务器请求异步还是同步?