promise async await 结合 demo1

本文通过四个异步接口的示例,探讨了使用Promise进行异步操作及错误处理的方法。通过模拟post请求,展示了如何使用try...catch结构处理可能发生的错误,并结合Promise.all实现多个异步操作的同时处理,最后分析了执行结果。
// 模拟 post 异步接口 begain
let post1 = ()=> {
    return new Promise((resolve, reject) => {
        setTimeout(()=>{
            reject('reject 2000')
        } , 2000)
    })
}
let post2 = ()=> {
    return new Promise((resolve, reject) => {
        setTimeout(()=>{
            resolve('success 1000')
        } , 1000)
    })
}
let post3 =  ()=> {
    return new Promise((resolve, reject) => {
        setTimeout(()=>{
            resolve('success 3000')
        } , 3000)
    })
}
let post4 =  ()=> {
    return new Promise((resolve, reject) => {
        setTimeout(()=>{
            reject('reject 4000')
        } , 4000)
    })
}
// 模拟 post 异步接口 end

  2、

// 模拟 post 异步接口   try catch 方式 begain
const getByApi1 = async ()=> {
    try {
        const data = await post1()
        console.log('getP1 try 2s')
        return data
    }catch(e){
        console.log('getP1 catch 2s')
        return e
    }
}
const getByApi2 = async ()=> {
    try {
        const data = await post2()
        console.log('getP2 try 1s')
        return data
    }catch(e){
        console.log('getP2 catch 1s')
        return e
    }
}
const getByApi3 = async ()=> {
    try {
        const data = await post3()
        console.log('getP3 try 3s')
        return data
    }catch(e){
        console.log('getP3 catch 3s')
        return e
    }
}
const getByApi4 = async ()=> {
    try {
        const data = await post4()
        console.log('getP4 try 4s')
        return data
    }catch(e){
        console.log('getP4 catch 4s')
        return e
    }
}
// 模拟 post 异步接口   try catch 方式 end

  3、

Promise.all([getByApi1(), getByApi2(), getByApi3(), getByApi4()]).then((result) => {
    console.log('result')
    console.log(result)
}).catch((error) => {
    console.log('error')
    console.log(error)
})

  4、看结果

1s后,console.log 'getP2 try 1s'  ;

2s后,console.log 'getP1 try 2s' ; 

 3s后,console.log 'getP3 try 3s';

4s后,console.log 'getP3 try 3s';

然后 

result
["reject 2000", "success 1000", "success 3000", "reject 4000"]
getP2 try 1s
getP1 catch 2s
getP3 try 3s
getP4 catch 4s
result
["reject 2000", "success 1000", "success 3000", "reject 4000"]

  

转载于:https://www.cnblogs.com/daji/p/10008649.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值