KOA-async/await语法

KOA-async/await语法

前言

Koa2相较Koa1最大的区别就是中间件的写法不同,Koa1使用Generator,Koa2使用async/await语法。

使用Async/Await语法

  • 在讲解Async/Await之前,有必要简单讲一下javascript的异步发展历程,并给每种异步的方式给一段示例代码,异步主要经历了这么几个过程:

    • Es6之前:
      回调函数(callback)
    • Es6:
      Promise对象
      Generator函数
    • Es7:
      async/await语法
  • 使用async/await

    • async用于声明一个function是异步的
    • await只能出现在用async修饰的function中
  • async到底起什么作用:

    • async函数返回一个promise对象,如果在async函数中返回一个直接量,async会通过Promise.resolve封装成Promise对象。我们可以通过调用promise对象的then方法,获取这个直接量。
  • await到底在等什么

    • await会暂停当前async的执行,await会阻塞代码的执行,直到await后的表达式处理完成,代码才能继续往下执行。

    • await后的表达式既可以是一个Promise对象,也可以是任何要等待的值。

    • 如果await等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。!

    • 如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。

        router.get('/All', async (ctx) => {
                    let query_params = ctx.query;
                    let result = null;
                    result = await TeamController.getAllGroup()
                    response(ctx, result);
                });
      

    例如我们项目中的api,TeamController.getAllGroup就会阻塞代码的执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值