async和await语法

2021-05-20  本文已影响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返回成功和失败的信息。

上一篇下一篇

猜你喜欢

热点阅读