Learning Card
async
函数是什么generator
函数的语法糖,即高级封装
- 基本用法
- 将
generator
函数的*
替换成了async
,yield
替换成了await
- 但是内置执行器,可以直接执行
- 将
async
函数是什么
- 一句话,
async
函数是generator
函数的语法糖 - 所谓语法糖,就是高级封装
我们可以理解,async
函数就是generator
函数的高级版,它让generator
函数写起来更方便了。
async
函数的基本用法
既然async
函数是generator
的高级封装,我们可以结合两者一起来看看它们之间的区别和联系。
1 | const fs = require('fs'); |
从写法上看,不难发现,async
函数只是将generator
函数的星号(*
)替换成了async
,将yield
替换成了await
。
但是async
在用法上还是对generator
函数有了一些改进:
内置执行器
generator
函数的执行需要next()
来调用,但是async
函数自带执行器,即与普通函数一样,直接调用即可1
asyncReadFile()
语义更明确
async
本身就有异步的含义,await
也有等待结果的意思,比*
和yield
意思更明确返回值是Promise
async
函数的返回值是Promise对象,也就是说,我们可以用then
方法执行下一步操作。