调用异步函数时在哪里添加错误处理?

我正在使用异步window.fetch呼叫,它返回一个承诺。为了解决这个问题,我把我的处理程序放在了这个承诺的then()部分。调用异步函数时在哪里添加错误处理?

async await的文档建议使用try catch来捕获错误。但承诺有rejectcatch()功能,以及...

这不是很清楚,我这三个我都用赶上从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

回到顶部