为什么我得到错误时,控制台都有.then和.catch函数?但是在控制台没有错误,而只有.catch函数?

  • 本文关键字:控制台 catch 函数 有错误 then 错误 javascript
  • 更新时间 :
  • 英文 :

let condition=false;
let p1=new Promise((resolve,reject)=>{
console.log("p1 is pending");
setTimeout(()=>{
if(condition){
console.log("p1 resolved");
resolve("i resolved");
}
else{
console.log("p2 rejected");
reject("i rejected");
}
},3000);
});

p1.then((returned_val)=>{
console.log(".then-> p1 returned :",returned_val);
})
p1.catch((returned_val)=>{
console.log(".catch-> p1 returned :",returned_val);
});

我希望控制台不会出现错误,因为有.catch函数来处理它。但是这种情况只发生在单独使用。catch函数而不是同时使用。then和。catch函数

时(在控制台中没有错误)。

这里有两个承诺链:p1.then()p1.catch()

拒绝通过两个链传播,但在第一个链中没有捕获。

如果你在那里添加一个.catch,这个问题就会消失。

let condition=false;
let p1=new Promise((resolve,reject)=>{
console.log("p1 is pending");
setTimeout(()=>{
if(condition){
console.log("p1 resolved");
resolve("i resolved");
}
else{
console.log("p2 rejected");
reject("i rejected");
}
},3000);
});
const errorHandler = (returned_val)=>{
console.log(".catch-> p1 returned :",returned_val);
}
p1.then((returned_val)=>{
console.log(".then-> p1 returned :",returned_val);
}).catch(errorHandler)
p1.catch(errorHandler);

和预期的一样记录了两次。

最新更新