javascript - 在 fetch() 调用中捕获除网络问题以外的错误的正确方法
问题描述
我的呼叫路线fetch()
可以产生两种可能的响应,我想做不同的事情。但是如果我没记错catch()
的话, offetch()
只会捕获网络错误。
下面是我当前的代码,但它对我来说看起来很奇怪,我觉得有一种更合适的方法来做到这一点。如果是这样,它是什么?
fetch(`${this.baseUrl}/wp-json/contact/v1/send`, {
method: 'POST',
body: formData
})
.then((res) => {
if (res.status === 304) {
// do something
} else {
// do something different
}
})
.catch(error => {
console.log(error)
})
解决方案
如果你正在使用async
await
你可以使用经典try...catch...finally
try {
await fetch(`${this.baseUrl}/wp-json/contact/v1/send`, {
method: 'POST',
body: formData
})
} catch (e) {
console.error(e);
} finally {
console.log('We do cleanup here');
}
推荐阅读
- c++ - 如何在执行过程中显示加载 gif?
- php - 如何修复php post错误a 403 Forbidden
- vb.net - 来自 csv 文件的 VB.net 总和
- python - 如何使用 ruby 代码库中的 python 库?
- html - 添加新项目时以固定高度滚动到表格底部
- sql - Powershell:将 SQL-Reply/Array 与文件内容进行比较和过滤
- awk - 每次搜索图案并在特定图案上方打印
- javascript - 如何使方法 GET 带有参数和最后的 uri?
- azure - Azure Kusto 使用 KQL 创建数据库
- airflow-scheduler - 每两周安排一次气流作业