javascript提取引发一般错误,而不是返回失败的响应

问题描述 投票:1回答:1

我正在使用Fetch在javascript中发出跨源请求

某些请求由于速率限制而被API阻止,并返回429。

我无法捕获此错误并获得其状态代码,如下面的屏幕快照所示。

screenshot

我的代码如下:

    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,尽管这通常意味着权限问题或类似问题

response

javascript cors fetch fetch-api
1个回答
-1
投票

当然,此行永远不会运行if (!response.ok) {,为什么?

您有一个try {} catch(e) {}块,因此,当fetch引发错误时,您的try块将退出,并且catch块将运行。

一切正常,您只希望2 + 2为5。

检查codepen example

© www.soinside.com 2019 - 2024. All rights reserved.