async和await (promise的使用)

本文讲解了如何在async函数中使用await等待返回Promise的结果,包括成功处理、错误捕获以及Promise.all的运用实例。通过handler和test函数演示了如何在异步环境中获取和处理数据,以及如何利用Promise处理并发和错误情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. await后面接一个会return new promise的函数并执行它
  2. await只能放在async函数里

使用acync 和 await 获取成功的结果

function handler(){
    return new Promise((resolve, reject)=>{
        let sino = parseInt(Math.random() * 6 +1)
        setTimeout(()=>{
            resolve(sino)
        },3000)
    })
}
async function test(){
    let n =await handler()
    console.log(n)
}
test()

async 中的await handler() 函数先执行, test 要在3 秒后执行,test函数为异步

获取失败的结果

function handler(value){
    return new Promise((resolve, reject)=>{
        let sino = parseInt(Math.random() * 6 +1)
        if(sino > 3){
            if(vslue === 6){
                resolve(sino)
            }else{
                reject(sino)
            }
        }else{
            if(value === 6){
                reject(sino)
            }else{
                resolve(sino)
            }
        }
    })
}
async function test(){
    try{
        //把await及获取它的值的操作放在try里
        let n =await handler(6)
        console.log('大' + n)
    }catch(error){
      //失败的操作放在catch里
        console.log('小' + error)
    }
}
test()

把await 成功后的操作放到try 中,失败的放在 catch 中

使用promise

function handler(value){
    return new Promise((resolve, reject)=>{
        let sino = parseInt(Math.random() * 6 +1)
        if(sino > 3){
            if(value === 6){
                resolve(sino)
            }else{
                console.log('error')
                reject(sino)
            }
        }else{
            if(value === 6){
                console.log('error')
                reject(sino)
            }else{
                resolve(sino)
            }
        }
    })
}
Promise.all([handler(6),handler(6)])
.then(
    (x)=>{console.log(x)},
    (y)=>{console.log(y)}
)

promise.all 里面跟一个数组,数组的每一项都是一个promise 的函数调用,                              then的第一个参数是所有的promise都成功后调用,拿到所有promise的结果是一个数组;第二个参数拿到的是第一个失败的值 

使用await

async function test(){
    try{
        let n = await Promise.all([handler(6),handler(6)])
        console.log("xxx")
    }catch(error){
        console.log(error)
    }
}
test()

async 会返回一个成功的 promise对象  resolved(成功的状态值)

如果没有resolved() 抛出,await 就拿不到结果, xxx打印不出来

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值