ES2107新语法,它是Generator函数的语法糖。
generatora函数
function* fn() {
var f1 = yield readFile('/abc.js') // readFile()返回promise
var f2 = yield readFile('/index.js')
console.log(f1,f2)
}
async函数
async function fn() {
var f1 = await readFile('/abc.js')
var f2 = await readFile('/index.js')
console.log(f1,f2)
}
从上面写法上可以看出: async 替换 * , await 替换 yield
1 语法特性
1.1 内置执行器
generator函数需要手动调用next或者利用co模块来实现流程操作,但是async函数只需跟普通函数一样,执行
fn()
1.2 更好的语义
1.3 更广的实用性
如果使用co模块等自动流程管理工具,需要yield后面为Thunk函数或promise对象。
await后面可以是promise和任何原始类型值
1.4 返回promise
可以继续使用then链式调用