javascript - 为什么在 b 打印之前打印 2 和 4?
问题描述
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
显然,我弄错了。谁能向我解释这是如何真正起作用的?
解决方案
推荐阅读
- mutiny - Multi / Uni 操作员文档
- firebase - Firebase Auth authStateChanges 触发器
- r - 如何将州名添加到澳大利亚地图?
- r - 在 R 的不同子目录中创建相同的文件夹
- ruby-on-rails - Act_as_Taggable 不返回所选标签上的元素
- google-apps-script - 幻灯片创建上的高级幻灯片 api 未使用预定义布局
- r - R ggmap覆盖geom_contour
- python - 为什么我的烧瓶 sqlalchemy 中的数据没有更新?
- android - Android 11 - 其他人注意到 SetFitsSystemWindows 不起作用?
- python - Python Tkinter Pyscard如何实现PCSC读卡器的实时识别?