当前位置:网站首页>Promise(四)
Promise(四)
2022-04-23 05:56:00 【画不完的饼】
Promise几个关键的问题
1.如果当前的Promise状态为pending状态,抛出异常后,Promise就会变成rejected状态
const p6 = new Promise((resolve, reject) => {
//resolve(1) //promise变为resolved成功状态
// reject(2) //promise变为rejected失败状态
throw 3 //抛出异常,Promise变为rejected状态,reason 为抛出的error
})
p6.then(() => {
value => {},
reason => {
console.log('reason',reason)
}
})
2.一个Promise指定多个成功/失败的回调函数,都会调用吗?
//多个调用会全部回调
p6.then(() => {
value => {
console.log('success',value)
},
reason => {
console.log('reason',reason)
}
})
p6.then(() => {
value => {
console.log('success',value)
},
reason => {
console.log('reason',reason)
}
})
3.改变Promise状态和指定回调函数谁先谁后?
//常规:先指定回调函数,后改变的状态
new Promise((resolve, reject) => {
setTimeout(() => { //后改变的状态(同时指定数据,异步执行回调函数)
resolve(1)
})
}).then(() => { //先指定回调函数,保存当前指定的回调函数
value => {},
reason => {
console.log('reason', reason)
}
})
//方法1:先改变状态,在指定回调函数
new Promise((resolve, reject) => {
resolve(1) //先改变的状态(同时指定数据)
}).then(() => { //后指定回调函数,异步执行回调函数
value => {
console.log('value', value)
},
reason => {
console.log('reason', reason)
}
})
//方法2:先改变状态,在指定回调函数
const ps = new Promise((resolve, reject) => {
setTimeout(() => { //后改变的状态(同时指定数据,异步执行回调函数)
resolve(1)
},1000)
})
setTimeout(()=>{
p.then(() => { //先指定回调函数,保存当前指定的回调函数
value => {},
reason => {
console.log('reason', reason)
}
})
},1000)
注意:在Promise中,成功和失败的回调函数,永远是异步执行。即使条件满足了,也不是马上执行。
4.Promise.then返回的新的Promise的结果状态由什么决定?
//(1)简单表达:由then()返回的新的Promise的回调函数执行的结果决定
//(2)详细表达:
//如果抛出异常,新的Promise变为rejected,reason为抛出的异常
//如果返回的是非Promise的任意值,新Promise变为resolved,value为返回值
//如果返回的是另一个新Promise,此Promise的结果就会变为新Promise的结果
new Promise((resolve, reject) => {
resolve(1)
// reject(2)
}).then(
value => {
console.log('onResolved1()', value)
//return 2
//return Promise.resolve(3)
//return Promise.rekect(4)
},
reason => {
console.log('onrejected1()', reason)
}
).then(
value => {
console.log('onResolved2()', value)
},
reason => {
console.log('onrejected2()', reason)
}
)
版权声明
本文为[画不完的饼]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_39162041/article/details/124346978
边栏推荐
猜你喜欢

FOC SVPWM function pwmc_ Setphasevoltage parsing

Makefile foundation, common functions and general makefile

.Net Core 下使用 Quartz —— 【5】作业和触发器之触发器的通用属性和优先级

浏览器中堆栈内存的底层处理

VHDL finite state machine (FSM) code example

Redux概述

Parse PSD files and map them into components

uniapp 自定义搜索框适配小程序对齐胶囊

WebAPI+Form表单上传文件

.Net Core 下使用 Quartz —— 【4】作业和触发器之作业属性和异常
随机推荐
低代码开发平台整理
freeCodeCamp----budget & category 练习
服务器常见错误代码 总结
JS中 t, _ => 的解析
Node模版引擎(ejs, art-template)
Node的数据库编程
.Net Core3.1 使用 RazorEngine.NetCore 制作实体生成器 (MVC网页版)
js查找字符串中出现了三次的字符
Oracle改成mysql
.Net Core 下使用 Quartz —— 【2】作业和触发器之初步了解作业
.NET跨平台原理(上篇)
查漏补缺(七)
说说ts的心里话
小程序学习笔记(一)
js根据名字将数组对象中名字相同的项组成一个相同的数组
ASP.NET CORE3.1 Identity注册用户后登录失败的解决方案
2022ldu winter vacation training - program patch
小米摄像头异常解决
启用AHCI后无法启动系统
js中entries(),keys(),values() , some(), Object.assign()遍历数组用法