2017-10-20 126 views
3

我現在面臨一個問題,在取作出反應,它給了我一個不完整的響應,所以當我解析響應爲JSON,這是我返回一個錯誤。反應取給了我一個截斷的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; 
    } 
}; 

響應日誌: Response log

是否獲取的最大響應大小?如果是,如何增加它?

回答

4

有沒有最大限制,以獲取響應大小。

在你的情況下,錯誤意味着你正在閱讀的響應主體不止一次。嘗試用Body.bodyUsed來保護.json()呼叫。

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

+0

它是一個異步功能,所以它會被稱爲不止一次,不是嗎?你的意思是,我需要在'.json()'調用中驗證'bodyUsed'是否爲真? –

+0

@JustinusHermawan參見[從重讀響應正文JavaScript的獲取](https://stackoverflow.com/questions/40497859/reread-a-response-body-from-javascripts-fetch/),[如何的JSON下載使用取?在JavaScript(https://stackoverflow.com/questions/46797810/how-do-download-of-json-using-fetch-in-javascript/) – guest271314

+0

@ guest271314我沒有用'TypeErrror任何問題:已經閱讀過',這只是因爲我正在用'response.text()'進行調試,只是忽略它。 我的問題是在截斷JSON響應,如我在'response.text()'日誌中看到的。 –