Js处理异步async/await

async

  • 首先async内部实现原理就是Promise
  • 将返回一个Promise对象,所以获取async的返回值需使用.then方法
  •  当async内部抛出异常状态, Promise 对象变为reject状态,使用catch 方法进行捕获

async函数在执行过程中,后续代码也开始执行。


async function notnow(){
    return "我执行时,后续代码已经开始运行"
}
notnow().then(res => {console.log(res)})  //then获得resolved结果
console.log("我比上边先跑")

async function notnow(a){
    if(a){
        return "我是resolved的结果"
    }else{
        throw "我是异常的结果,不使用catch会报错"
    }    
}
notnow(false).catch(err => {console.log(err)})

 


await

  • await 只能放到async 函数里。
  • 表示紧跟在后面的表达式需要等待结果才能运行。

下面看一段代码 

function justwait2s(a){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            resolve(a*2)
        },2000)       
    })
}

async function test(){
    let answer = await justwait2s(2);
    console.log(answer);
    console.log("我是不是先跑呢?")
}

test();

两秒后输出
//4
//我是不是先跑呢

对比上面的情况,遇到await 之后,代码就暂停执行了, 等待await执行完毕后,后续代码才会执行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值