Promise和async/await的两种常用的实际应用场景

Promise和async/await常用的就是用来优化多重异步和异步嵌套,防止回调地狱

现在有两种业务场景

1.需要先获取一个人的信息,在通过这个人的信息来进行另外操作,这两个异步操作需要按照先后顺序依次执行

很简单,贴代码

async function getAllInfo(){
    let info1 = await getinfo1()
    console.log(info1)
    let info2 = await getinfo2(info1)
    console.log(info2)
}
getAllInfo()
function getinfo1(){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
             resolve("get info1!!")            
        },1000)    
    })
    
}
function getinfo2(info1){
//模拟耗时请求
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
             resolve("get info2!!!")               
        },1000)    
    })    
}

结果是过一秒钟打印出get info1!!

再过一秒钟打印出get info2!!!

2.需要同时获取一个人的多方面信息,而且信息需要多个请求才能获得,但是获取的信息没有依赖关系,可以同时请求

这个时候如果向之前一样一个一个执行,效率就会大打折扣,这个时候就要用到Promise.all(),这个方法允许传入promise数组,他会自动帮你把数组打包成一个promise,只有当所有promise都运行完且都为fulfilled才会视为成功,反之则失败,贴代码

async function getAllInfo(){
    Promise.all([getinfo1(),getinfo2()]).then((value)=>{
        console.log(value)
    }).
}
getAllInfo()
function getinfo1(){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
             resolve("get info1!!")            
        },1000)    
    })
    
}
function getinfo2(){
//模拟耗时请求
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
             resolve("get info2!!!")               
        },2000)    
    })    
}

结果:

整个promise的时间是由耗时最长的promise决定的,也就是2s

后续会记录下超时处理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值