Promise(一)

本文深入探讨了Promise的三种状态——pending、resolved和rejected之间的转换关系,并通过JavaScript代码示例展示了它们如何影响异步操作的流程。同时,解释了在不同状态下Promise如何触发then和catch回调,以及这些回调如何影响返回Promise的状态。最后,总结了在处理Promise时的常见模式和行为。

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

Promise的三种状态

1.pending
2.resolved
3.rejected

三种状态关系
pending -> resolved (可以转换)
pending -> rejected (可以转换)

    <script>
        const p1 = new Promise((resolve, reject) => { //创建promise
        })
        console.log(p1)
            // pending=>resolved
        const p2 = new Promise((resolve, reject) => { //创建promise2
            resolve()
        })
        console.log(p2)
            // pending=>reject
        const p3 = new Promise((resolve, reject) => { //创建promise3
            reject()
        })
        console.log(p3)
    </script>

Promise不同状态表现

//pending状态下的promise不会触发then 和catch 
const p1 = new Promise((resolve, reject) => { //创建promise
   })
 console.log(p1)
 p1.then(()=>{
console.log('p1 then')
}).catch(()=>{
console.log('p1 catch')
})
//resolve状态下的promise会触发then里面的回调函数
const p2 = Priomise.resolve() //简写
 p2.then(()=>{
console.log('p2 then')
}).catch(()=>{
console.log('p2 catch')
})

//reject状态下的promise会触发catch 里面的回调函数
const p3 = Promise reject()
 p3.then(()=>{
console.log('p3 then')
}).catch(()=>{
console.log('p3 catch')
})

then、catch对Promise状态的影响

const p1 = Promise.resolve()
console.log(p1)
//p1.then的回调函数里面没有抛出异常,所以,会返回一个resolve
const res = p1.then(()=>{
console.log('success')
})

//p1.then的回调函数里面抛出异常,所以,会返回一个reject
const res = p1.then(()=>{
 throw new Error('error')//这里我抛出一个异常
})


//p1.catch的回调函数里面没有抛出异常,所以,会返回一个resolve
const res = p1.catch(()=>{
console.log('success')
})

//p1.catch的回调函数里面抛出异常,所以,会返回一个reject
const res = p1.catch(()=>{
 throw new Error('error')//这里我抛出一个异常
})

总结:无论then || catch 有没有抛出异常,p.then或者p.catch都会返回一个resolve状态的Promise。如果抛出异常,p.then或者p.catch都会返回reject状态的Promise。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

画不完的饼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值