我正在使用Fetch在javascript中发出跨源请求。
某些请求由于速率限制而被API阻止,并返回429。
我无法捕获此错误并获得其状态代码,如下面的屏幕快照所示。
我的代码如下:
try {
let response = await fetch(uri, config); // this throws
if (!response.ok) { // this line does not run
throw response.statusText;
}
let json = await response.json();
return json;
} catch (e) {
console.log(e.message); // "Failed to fetch"
}
根据我的阅读,我应该先检查response.ok
,但是我的fetch
在该行前抛出错误:
无法获取
如何捕获此消息并解析其响应状态代码?
基于MDN docs,是否可以将这429个错误与其他网络错误分开检测?
[fetch()承诺会在遇到网络错误或在服务器端错误配置了CORS时拒绝,并带有TypeError,尽管这通常意味着权限问题或类似问题
当然,此行永远不会运行if (!response.ok) {
,为什么?
您有一个try {} catch(e) {}
块,因此,当fetch
引发错误时,您的try
块将退出,并且catch
块将运行。
一切正常,您只希望2 + 2为5。