个人项目地址: SubTopH前端开发个人站
(自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面)
SubTopH前端开发个人站https://subtop.gitee.io/subtoph.github.io/#/home
以上 👆 是个人前端项目,欢迎提出您的建议😊
以下是正文内容...............
如果Promise抛出错误,then中没有处理就会报错
报错情况
// 这样会报错,因为没有处理promise的拒绝
const promise = new Promise((resolve, reject) => {
reject("111111")
// resolve()
})
promise.then(res => { //这里没有处理promise错误reject("111111"),会报错
})
promise.catch((err)=>{ //上面报错,不会执行
console.log(err);
})
处理报错信息2种语法糖
// 错误必须处理,方式1
const promise = new Promise((resolve, reject) => {
reject("111111")
// resolve()
})
promise.then(res => {
}, err => {
console.log(err); //处理错误 reject("111111")
})
// 错误必须处理,方式2
const promise = new Promise((resolve, reject) => {
reject("111111")
// resolve()
})
promise.then(res => {
}).catch((err)=>{
console.log(err); //处理错误 reject("111111")
})
catch捕获错误顺序,首先捕获new Promise
const promise = new Promise((resolve, reject) => {
reject("rejected status")
// 或者
// throw new Error("rejected status")
})
promise.then(res => {
}).then(res => {
throw new Error("then error message")
}).catch(err => {
console.log("err:", err) //直接捕获 new Promise reject("rejected status")
})
如果new Promise没有错误,会捕获then错误
const promise = new Promise((resolve, reject) => {
resolve('22222')
})
promise.then(res => {
}).then(res => {
throw new Error("then error message")
}).catch(err => {
console.log("err:", err) //直接捕获 then throw new Error("then error message")
})
catch返回值和then返回值一样
普通值会包裹在promise -- resolve('catch return value')中
返回promise或者thenable 和tnen返回值处理一样
// // 4.catch方法的返回值
const promise = new Promise((resolve, reject) => {
reject("111111")
})
promise.then(res => {
console.log("res:", res)
}).catch(err => {
console.log("err:", err) // new Promise reject("111111")
return "catch return value" //catch返回值和then一样返回promise -- resolve('catch return value')
}).then(res => {
console.log("res result:", res) //res result: catch return value -- return "catch return value"
}).catch(err => {
console.log("err result:", err)
})
const promise = new Promise((resolve, reject) => {
reject("111111")
})
promise.then(res => {
console.log("res:", res)
}).catch(err => {
console.log("err:", err) // new Promise reject("111111")
throw new Error("rejected status")
}).then(res => {
console.log("res result:", res)
}).catch(err => {
console.log("err result:", err) //err result: Error: rejected status
})
catch也可以和tnen一样多次调用(不是链式调用)