调用异步函数时在哪里添加错误处理?
我正在使用异步window.fetch
呼叫,它返回一个承诺。为了解决这个问题,我把我的处理程序放在了这个承诺的then()
部分。调用异步函数时在哪里添加错误处理?
async await
的文档建议使用try catch
来捕获错误。但承诺有reject
和catch()
功能,以及...
这不是很清楚,我这三个我都用赶上从fetch
呼叫失败装载的尝试。我也没有看到被拒绝的Promise和fetch(url).then().catch()
捕获的失败获取之间的区别。
我的唯一要求是fetch
调用位于自己的函数中,我可以在任何地方调用它。
// CALLING THE LOADDATA FUNCTION loadData().then(res => {
console.log("success")
}, err => {
console.log("rejected!")
}).catch(e => {
console.log("error is " + e);
})
// ASYNC LOADDATA
async function loadData() {
try{
const response = await fetch('./data.json');
return await response.json();
}
catch(e) {
console.log("nope!")
}
}
回答:
什么是捕捉错误的最佳点?
您应该在需要数据的地方处理错误,以便在出现故障的地方处理错误,更重要的是,您可以在何处处理错误。这意味着你应该通知用户有关错误或重试等等。 在您的情况下,错误处理程序会将所有错误消除并且无法真正处理它们,这使得使用Promise.catch
变得不必要,因为承诺永远不会被拒绝。 所以你loadData函数不应该处理错误可言,但它传递到更高的水平范围:
现在你可以使用then
处理错误:
loadData().then( /*success*/ (data) => console.log(data),
/*failure*/ (err) => console.error(err)
);
或者使用异步/ AWAIT:
(async function(){ try {
console.log(await loadData());
} catch(e){
console.error(e);
}
})()
什么是赶上()被拒绝的承诺之间的差别,在承诺,并在等待赶上?
当承诺被拒绝时,它会调用传递给catch
的处理程序或then
的第二个参数。
以上是 调用异步函数时在哪里添加错误处理? 的全部内容, 来源链接: utcz.com/qa/263878.html