当前位置:网站首页>Promise(一)
Promise(一)
2022-04-23 05:56:00 【画不完的饼】
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。
版权声明
本文为[画不完的饼]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_39162041/article/details/124192644
边栏推荐
- The use of volatile in C language
- Unity3D对象池的理解与小例子
- 微信小程序之改变数组中某值,对象中某值的方法
- 往String原型上封装一个时间戳转日期的方法
- Assembler 32-bit unsigned addition calculator
- FOC SVPWM function pwmc_ Setphasevoltage parsing
- WebSocket(基础)
- FOC single resistance sampling position loop control servo motor
- 监听除某元素之外点击事件
- Principle and characteristic analysis of triode
猜你喜欢
随机推荐
Set up a personal blog of jpress
赛氪-二进制
ASP.NET CORE 依赖注入服务生命周期
freeCodeCamp----time_calculator练习
useCenterHook
锚点定位——如何设置锚点居页面顶部距离,锚点定位并距离顶部一定偏移
oninput 一个函数达到控制多个oninput的效果(将本输入框的内容作为参数)【很实用,很实用】
欢迎使用Markdown编辑器
js更改全部变量失败后改成return方法,终于解决解决问题
Detailed explanation and application principle of token
v-for下定时给图片添加动画
VHDL arbitrary frequency divider (50% duty cycle)
Use of shell scripts & and 𞓜
关于软件的空间占用,安装目录
ES6
Sdoi2009-hh Necklace
条形码与二维码的生成
VHDL finite state machine (FSM) code example
SDOI2009-HH的项链
The difference between single quotation mark, double quotation mark and back quotation mark in shell script