async与await基础

async函数

  • 函数的返回值为promise对象
  • promise对象的结果由async函数执行的返回值决定
  • async的作用是声明一个函数为异步函数,当用了async声明后,这个函数就成了一个promise对象 ,如果这个函数有返回值,那么函数内部会把这个return 的值赋值给promise对象的PromiseValue。通过await就可以拿到这个异步返回值。当然通过then()也可以拿到。

await表达式

  • await右侧的表达式一般为promise对象,但也可以是其他的值
  • 如果表达式是promise对象,await返回的是promise成功的值
  • 如果表达式是其他值,直接将此值作为await的返回值
  • await 是等待的意思,用于含有async的函数体内,可以让两个异步函数按照同步的顺序执行,也就是自上而下,依次执行。这样可以避免写过多的嵌套代码。

注意

await必须写在async函数中,但async函数中可以没有await

如果await的promise失败了,就会抛出异常,通常需要try...catch来捕获

基本用法

async function queryData(id){
    const ret=await axios.get('/data');
    return ret;
}
queryData.then(ret=>{
    console.log(ret)
})

async/await处理多个异步请求

//前端:
async function queryData(){
    var info = await axios.get('async1');
    var ret = await axios.get('async2?info='+info.data);
    return ret.data
}
queryData().then(function(data){
    console.log(data)   //结果为  world
})

//后台:
app.get('/async1',(req,res) => {
    res.send('hello')
})
app.get('async2',(req,res) => {
    if(req.query.info == 'hello'){
        res.send('world')
    }else{
        res.send(error)
    }
})
原文地址:https://www.cnblogs.com/wahaha-/p/14051103.html