一、前言
在上一篇文章中我记录了 generator 的用法:es 异步流程(二)之generator篇
不了解generator语法的话,建议先看懂generator再看async。
generator和自动化执行器的配合已经使得异步编程非常地简洁了,但是还会有人觉得:“generator函数语义还不够直观,每次调用都需要用一次 执行器函数...”。
后来,在es2017中便出现了async/await 规范。async / await 并不是全新的东西,它只是generator的语法糖,它的底层依然是使用generator 和 promise 。
二、使用
1. async 函数格式
与generator函数使用 " * " 不同,async 函数 使用 " async "来表示该函数是异步操作函数,语义相比" * "直观很多。
async function asyncFn(){
...
}
另外,async函数的返回值是 Promise 。
async function asyncFn(){
var r1 = 100;
var r2 = 200;
return r1 + r2;
}
asyncFn().then((res)=>{
console.log(res); //输出:300
})
2. await
async 函数是内置执行器的,也就是说可以省略使用 co 这些库,大大方便了使用。