持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
1.async 函数的实现原理
就是将 Generator 函数和自动执行器,包装在一个函数里。
所有的async函数都可以写成上面的第二种形式,其中的spawn函数就是自动执行器。
1.async函数的改进之处:
内置执行器
Generator 函数的执行必须靠执行器,而async函数自带执行器。也就是说,async函数的执行,与普通函数一模一样,只要一行。
上面的代码调用asyncPrint会自动执行,50毫秒后输出:hello world,若是Generator 函数,需要调用next方法才能真正执行,得到最后结果。
返回值
async函数返回的是promise对象,可以用then方法指定下一步的操作,而Generator 函数的返回值是 Iterator 对象,却不行。
async函数内部return语句返回的值,会成为then方法回调函数的参数。
async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到。