![612edc2ed6660de137aeeeb88fb4966e.png](https://img-blog.csdnimg.cn/img_convert/612edc2ed6660de137aeeeb88fb4966e.png)
生成器这种方式需要编写外部的执行器,而执行器的代码写起来一点也不简单。
当然也可以使用一些插件,比如co模块来简化执行器的编写。
![5370a7239d40b522341281da120ada44.gif](https://img-blog.csdnimg.cn/img_convert/5370a7239d40b522341281da120ada44.gif)
在ES7中,加入了async函数来处理异步。
它实际上只是生成器的一种语法糖而已,简化了外部执行器的代码,同时利用await替代yield,async替代生成器的(*)号。下面还是来看个例子:
async function delay(){ await new Promise((resolve) => {setTimeout(()=>{resolve()},2000)}); console.log("go on); } delay();
这个例子我们之前用生成器也写过,其中把生成器的(*)号被换成了async。
async关键字必须写在function的前面。如果是箭头