我无法在我的函数中捕获拒绝。我已经在谷歌上搜索过了,但是我还没有找到解决方案,所以请帮助我处理这段代码:
async function errorFunc(){
setTimeout(() => {
return Promise.reject("Any error occured!");
}, 1000);
}
async function main(){
await errorFunc().catch((error)=>{
console.log("E in catch:", error);
});
try{
await errorFunc();
}catch(e){
console.log("E in try-catch:", e);
}
}
main();
没有一个catch (inmain()function)工作…在控制台中,简单地打印(两次)这个错误消息:
Uncaught (in promise)发生任何错误!
我想抓住这个错误(或者最好说拒绝承诺)。我如何在我的main()函数中做到这一点?
谢谢!
async function errorFunc(){
return new Promise((resolve, reject) => setTimeout(() => reject("Any error occured!"), 1000))
}
这就是你想要的。
setTimeout(callback, ms)
callback
将在全局执行,没有人捕获它。
我认为它打印了两次相同的错误,因为在第二个函数中:
try{
await errorFunc();
}catch(e){
console.log("E in try-catch:", error);
}
}
你打印了"error"我不太明白这个问题但我想这就是它打印两次的原因,
maybe swap "error"与"e"打印捕获的其他错误
你必须从你的函数返回一个Promise
async function errorFunc(){
return new Promise((resolve,reject)=>{
setTimeout(() => {
return reject("Any error occured!");
}, 1000);
})
}
async function main(){
await errorFunc().catch((error)=>{
console.log("E in catch:", error);
});
try{
await errorFunc();
}catch(e){
console.log("E in try-catch:", e);
}
}