美文网首页
async和await语法

async和await语法

作者: 似朝朝我心 | 来源:发表于2021-05-20 20:53 被阅读0次

    什么是异步?什么是同步?

    同步:同一个线程当中,按照顺序完成不同的操作,是一个阻塞模式;后一个请求操作需要等待前一个操作完成之后,才能发出。
    异步:需要开启不同的线程,是非阻塞模式。

    其实同步类似于打电话,而异步相当于发短信。

    为什么这样说呢?

    如果你正在通话当中,别人此刻正想打电话给你,那么对方会受到客服小姐姐的提示:你拨打的电话正在通话中,请稍后再拨,这就说明线程被占用了,打电话需要排队,要等到别人通话完,才轮到你拨打电话,这就是同步。

    而异步就更简单了,就比如你手机群发短信,群发微信,既然是可以群发,那就是不需要排队,即多个线程同时进行,不会受到阻塞。

    async关键字,用于声明和定义异步函数,即修师函数用的,用来处理回调函数。
    用法:

    async function func(){}
    

    返回的是promise对象,可以通过.then()和.catch()方法来分别处理成功和失败的返回结果。
    异步函数的内部可以await关键字,await,用于暂停异步函数的执行,即阻止后面代码的运行。

    用法:

    const result = await someAsyncCall()
    

    当await关键字使用在Promise前面时,await需要等待Promise完成,并返回Promise的结果。

    await只能和Promise一起使用,不能和callback函数一起使用。

    async和await一般时搭配使用,await只能使用在async函数中。

    router.get('/list', async (ctx, next) => {
        
        let response = await axios.get('https://pacaio.match.qq.com/openapi/getWeiboRankingList')
        ctx.body = response.data //将拿到的JSON数据返回给前台
    })
    

    Promise对象用于表示一个异步操作的最终完成(或失败)即其结果的返回值。


    promise方式使用.then()和.catch()来获取成功的返回信息和捕捉失败的信息

    return new Promise((resolve,reject)=>{
    
    })
    .then(res=>{
            resolve(res)
    })
    .catch(err=>{
            reject(err.message)
    })
    

    callback方式采用success返回成功信息,fail返回失败的细腻些,complete返回成功和失败的信息。

    相关文章

      网友评论

          本文标题:async和await语法

          本文链接:https://www.haomeiwen.com/subject/xbbbjltx.html