ES6中async函数(二)
2018-10-16 本文已影响10人
XJBT
async函数返回的是什么东西?
看这样一个例子:
查看async函数的返回结果
返回结果
没有写return语句时
无return语句的执行结果
从这里我们可以发现,async函数总是返回一个Promise对象,即使没有return语句也会将undefined包装为一个Promise对象进行返回,这也正是我们在koa框架中使用async函数的原因,中间件里的函数采用async函数后,里面搭配上适当的await就可以达到确定异步操作顺序的目的。
koa中间件调用
上图可以看到我们设置了两个中间件,都采用的是async函数,访问localhost的7070端口时,首先调用第一个中间件,输出11,接下来利用next将执行权交给下一个中间件,下一个中间件返回一个Promise对象,实际情况其中可能封装一些异步操作,第一个中间件里的await则是为了拿到上述这个异步操作的结果,若没有写await则无法获得这个结果。执行结果如下:
执行结果
若将上述代码中的await去掉,那么等号将直接把下一个中间件返回的Promis对象赋值给res,得到的结果也就是这样了:
缺少await时