koa2学习笔记(三)async/await

async

无论是使用koa还是node,我们都会遇到大量都异步处理,在之前我们处理异步都方法是使用回调函数,可是那样既不美观也很很不容易后期维护。于是async函数出现了,我们可以用同步的方式来调用异步方法。

async使用方法

async function asyncF() {
    return 'I am a async result'
}
let async_result = asyncF()

console.log(async_result)
复制代码
Promise { 'I am a asyncSync result' }
复制代码

这里返回的是一个promise对象,这是es6里面的类型,在promise对象里面有一个then方法,在then方法里面我们可以拿到promise对象返回的值。我们来试试

async_result.then((res) => {
    console.log(res)
})
复制代码
I am a asyncSync result
复制代码

await

await必须配合async使用,顾名思义,是async wait (等待异步)的意思。

// 定义一个睡觉函数
function sleep(ms){
    return new Promise((resolve,reject)=>{
        setTimeout((ms)=>{
            resolve('睡觉了'+ms+'ms')
        },ms)
    })
}

// 定义一个async函数
async sleeptime(ms)=>{
    const start = Date.now() //开始时间
    await sleep(ms)
    const end = Date.now()
    console.log(end-start+'ms')
}
sleeptime(3000)  //睡觉3000ms
复制代码

结果

// 打印结果也是3000ms
3000ms
复制代码

await一般在等待async方法执行完毕,但是其实await等待的只是一个表达式,这个表达式在官方文档里说的是Promise对象,可是它也可以接受普通值。

async function testAsync() {
    return 'testAsync'
}
async function testAwait2() {
    let time1 = Date.now()

    await '1233'
    let time2 = Date.now()
    console.log(`cost ${time2 - time1} ms`)

    await delayF()
    let time3 = Date.now()
    console.log(`cost ${time3 - time2} ms`)

    await testAsync()
    let time4 = Date.now()
    console.log(`cost ${time4 - time3} ms`)
}
testAwait2()
复制代码

结果

cost 1 ms
cost 3002 ms
cost 1 ms

复制代码

总结

  • async是声明一个异步的函数,返回一个promise对象。
  • await是等待一个表达式(promise)的返回值执行完毕,必须结合async使用。
  • 写在await后面的方法都会等待await中的异步方法执行完毕之后再执行。

最后

欢迎指出不足,我会补充上去,还在持续更新。记录学习过程。

小强前端交流群QQ群:724179055

定时分析技术和资料,欢迎大家进来一起交流。

往期回顾地址:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值