尝试捕获然后仍然给出未捕获的错误

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

我正在从 API 获取数据。我想处理这两种情况,当响应是有效的 JSON 时和当它不是时。

return fetch( ... )
    .then(response => {
        let res
        try {
            res = response.json()
        } catch (e) {
            res = response.blob()
        }
        return res
    })

我认为这应该有效,但事实并非如此。它抛出

Uncaught (in promise) SyntaxError: Unexpected token 'N', " ... "... is not valid JSON

我做错了什么?

javascript promise try-catch
1个回答
0
投票

您正在处理

Promises
。 它们有一个内置的
.catch()
函数,您可以为该错误编写一个函数。此外,您不应依赖
try
catch
来确定如何处理数据,您可以通过请求中的
Content-Type
标头来确定数据类型。 MDN 网络文档

return fetch( ... )
    .then(response => {
        if (response.headers.get('Content-Type').includes('application/json')) {
            return response.json();  
        } else {
            return response.blob();  
        }
    })
    .catch(error => {
        console.error('There was an error:', error);
    });
© www.soinside.com 2019 - 2024. All rights reserved.