如何区分fetch请求的网络错误与页面刷新导致的错误?

如何区分fetch请求的网络错误与页面刷新导致的错误?

区分网络错误与页面刷新导致的Fetch异常处理 #你可以通过标记页面卸载状态结合网络状态判断来区分这两种场景,只对网络不可达的错误进行用户通知,忽略页面刷新导致的请求中断。

具体实现步骤 #监听页面卸载事件,标记是否为用户主动刷新/关闭页面在catch块中先判断是否是页面卸载导致的错误,若是则直接忽略针对网络类错误进行用户通知修改后的代码示例 #let isPageUnloading = false;

// 监听页面卸载事件,标记主动刷新/关闭行为

window.addEventListener('beforeunload', () => {

isPageUnloading = true;

});

try {

const response = await fetch(url, payload)

.then(raw => raw.json());

console.log("response:", response);

} catch (err) {

// 忽略页面刷新导致的请求中断

if (isPageUnloading) {

return;

}

// 判断是否为网络不可达类错误

if (!navigator.onLine || err.message.includes('Failed to fetch')) {

alert("网络连接异常,请检查网络设置后重试");

}

throw new Error(err);

}

补充说明 #beforeunload事件会在页面刷新、关闭、跳转时触发,通过这个事件设置的标记可以准确识别用户主动中断请求的场景navigator.onLine可以快速判断当前设备是否处于联网状态,结合错误信息Failed to fetch可以更精准定位网络类错误这种方案兼容性较好,覆盖了绝大多数浏览器环境内容的提问来源于stack exchange,提问作者ajthealchemist

相关推荐

QQ仙灵活动|QQ仙灵日常任务玩法|QQ仙灵最新活动任务详细描述|玩法攻略|QQ仙灵幸运百万怎么做
目前看来有必要再回顾一下02年世界杯韩国vs意大利
[中兴]大家的f7005光猫发热严重吗
365beat怎么下载

[中兴]大家的f7005光猫发热严重吗

📅 10-12 ⭐ 6782
2026面巾纸品牌排行榜
365beat怎么下载

2026面巾纸品牌排行榜

📅 07-02 ⭐ 8194
关于校园欺凌,你应该知道的事
365bet.com官方网站

关于校园欺凌,你应该知道的事

📅 07-06 ⭐ 9524
叮咚钱包安全吗?靠谱理财平台深度测评解析
365beat怎么下载

叮咚钱包安全吗?靠谱理财平台深度测评解析

📅 01-26 ⭐ 8991
推荐阅读 ❤️