【问题标题】:React fetch gives me a truncated JSON responseReact fetch 给了我一个截断的 JSON 响应
【发布时间】:2018-04-01 04:12:26
【问题描述】:

我在 React fetch 中遇到了一个问题,它给了我一个不完整的响应,所以当我将响应解析为 JSON 时,它返回了一个错误。

代码:

export default async (url, body = null, method = 'GET') => {
  let config = {
      method,
  };
  try {
      const response = await fetch(url, config);
      if (!response.ok) {
          throw new Error(response.statusText);
      }
      return await response.json();
  } catch (error) {
      console.warn(error);
      throw error;
  }
};

响应日志:

fetch 是否有最大响应大小?如果是,如何增加?

【问题讨论】:

    标签: javascript reactjs react-native fetch


    【解决方案1】:

    获取响应大小没有最大限制。

    您的案例中的错误意味着您多次阅读响应正文。尝试使用Body.bodyUsed 保护.json() 调用。

    https://developer.mozilla.org/en-US/docs/Web/API/Body

    【讨论】:

    • 这是一个异步函数,所以它会多次调用,不是吗?你的意思是,我需要在.json() 通话中验证bodyUsed 是否为真?
    • @guest271314 我对TypeErrror: already read没有任何问题,只是因为我在用response.text()调试,忽略它。我的问题在于我在 response.text() 日志中看到的截断的 JSON 响应。
    • @JustinusHermawan Response.body 只能读取一次。 .json() 调用读取ReadableStreamResponse.body,另见Why fetch Body object can be read only once?
    • @JustinusHermawan “我的问题在于我在response.text() 日志中看到的截断的JSON 响应。” 您是否在console 处展开了JavaScript 对象?跨度>
    猜你喜欢
    • 2018-01-25
    • 2023-03-18
    • 1970-01-01
    • 2016-08-18
    • 2018-08-10
    • 2020-05-03
    • 1970-01-01
    • 2022-12-13
    • 2018-03-14
    相关资源
    最近更新 更多