调用异步函数时在哪里添加错误处理?
我正在使用异步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



