基础知识准备
异步的实现方式及其相关概念
-
async是Generator的语法糖 -
Promise和Generator的关系:-
PromisePromise目前为止,以微任务的形式出现在面试题和文档中。在事件流中扮演微任务的角色,回调函数的执行时间与当前执行栈中的宏任务数量相关。Promise是一个内置对象。类似于Array等,是语言本身的一种对象类型,用到的时候需要new Promise().
-
GeneratorGenerator是一种概念,是对于函数的一种扩充,拥有普通函数所没有的特性.Generator函数返回一个指向内部的状态机,而不是执行结果,执行的最后结果需要调用执行器,利用执行器不停的调用next()直到流程结束才会得到最终值- 调用方式与普通函数一致
- 定义方式与普通函数不同,需要函数名和
function关键字之间有一个*表示当前函数为一个Generator函数
-
-
async对Generator改造的地方-
async将*变成了async,yeild变成了await -
async内置了执行器:Generator执行必须依靠执行器,调用Generator函数返回执行器,用执行器进行流程控制async不需要执行器,会自动执行async返回一个Promise,执行器返回的是一个具体的结果,返回值由Generator的return语句的返回值决定
-
KOA和异步的关系
- KOA是一个WEB框架,js的异步方案主要是:回调、
Promise、Generator三大方式。 - KOA通过组合
Generator来减少web中的回调,以避免回调地狱问题,减少开发的复杂。 KOA use可以在请求处理之前修改request,返回response之前修改response