許多現代 JavaScript 應用程式使用 Fetch API 發出 HTTP 請求。 Fetch API 傳回一個解析為 Response 物件的 Promise 物件。 Response 物件可用於存取回應的狀態碼、標頭和正文。
有時,伺服器會使用指示錯誤的 HTTP 狀態碼來回應。例如,如果未找到請求的資源,伺服器可能會回應 404 狀態代碼。預設情況下,當伺服器回應非 2xx 狀態代碼時,Fetch Promise 不會拒絕。
這可能會使處理程式碼中的錯誤變得困難。若要解決此問題,您可以在解析或拒絕 Promise 之前使用 status() 函數檢查 Response 物件的狀態碼。以下是狀態程式碼不正常時如何使用 status() 函數拒絕 Fetch Promise 的範例:
function fetchVehicle(id) { return dispatch => { return dispatch({ type: 'FETCH_VEHICLE', payload: fetch(`http://swapi.co/api/vehicles/${id}/`) .then(status) .then(res => res.json()) .catch(error => { throw(error); }) }); }; } function status(res) { if (!res.ok) { return Promise.reject() } return res; }
如果 Response 物件的狀態碼不正確,則此程式碼將拒絕 Fetch Promise不行。然後,您可以使用 .catch() 方法來處理錯誤。
以下是如何使用 .catch() 方法來處理錯誤的範例:
fetchVehicle(1).catch(error => { console.log(error); });
This程式碼會將錯誤記錄到控制台。
以上是當狀態代碼不正常時如何拒絕 Fetch Promise 並捕獲錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!