JavaScript 异步与并发 MOC
Promise、async/await、事件循环与宿主异步边界的导航。
#moc
#growing
#dev
#javascript
[!info] related notes
- 父 MOC:JavaScript MOC
- 学习路线:JavaScript 学习路线 MOC
- 相邻:浏览器 JS MOC · Node.js 侧 JS MOC
JavaScript 异步与并发 MOC
知识总览
filters:
and:
- 'file.ext == "md"'
- 'file.inFolder("z")'
- 'this.file.links.contains(file)'
- 'file.path != this.file.path'
formulas:
knowledge: 'file.asLink(title)'
properties:
formula.knowledge:
displayName: 知识
note.description:
displayName: Description
note.mastery:
displayName: Mastery
views:
- type: table
name: 知识总览
order:
- formula.knowledge
- note.description
- note.mastery
columnSize:
formula.knowledge: 280
note.description: 760
note.mastery: 56
这个概念为什么出现
JS 的“并发”不是多线程默认叙事,而是事件循环上的任务调度。没有这张地图,async 代码会变成不可预测的时序迷宫。
从这里开始
任务调度
继续深入
自测题
- 为什么不能用 sleep 假装同步锁?
- 浏览器在一个 task 结束后为什么要执行 microtask checkpoint?
答案
- sleep 只推迟执行,不提供互斥与内存可见性语义,还会阻塞事件循环。
- 当前 task 的 JavaScript 返回且调用栈为空时,浏览器执行 microtask checkpoint,持续清空已排队的 microtasks;之后浏览器才可能渲染并选择下一个 task。