Async是什么
Async 实现原理
Async 是对Generator的一个升级
1 | async function fn(args) { |
Babel 如何对Async 做的编译
参考抽象语法树1: https://juejin.im/post/5c8d3c48f265da2d8763bdaf#heading-12
参考文档2: https://segmentfault.com/a/1190000015653342#articleHeader24
- Babel 通过Babylon(Babel parser) 将async经过词法分析&语法分析后输出AST(抽象语法树) 结构如下
1 | async function fn(args) { |
- 根据 type: ‘FunctionDeclaration’, async: true 将函数转成Generator函数
- 将Generator函数AST, 编译成ES5代码