가져오기: HTTP 상태 코드를 기반으로 프라미스 거부 제어
가져오기 영역에서 프라미스는 일반적으로 네트워크 오류가 발생할 때만 거부됩니다. 그러나 4xx 또는 5xx HTTP 상태 코드가 반환되는 시나리오에서는 기본적으로 Promise가 거부되지 않습니다.
문제:
제공된 코드에서 다음을 시도하고 있습니다. HTTP 응답 상태가 오류를 나타낼 때 Promise를 가로채서 거부합니다. 그러나 Promise가 예상대로 거부되지 않습니다.
이유:
Fetch Promise는 네트워크 오류가 발생할 경우 TypeError로만 거부됩니다. 4xx 및 5xx 응답은 네트워크 오류가 아니므로 포착할 수 있는 것이 없습니다. Promise를 수동으로 거부하려면 오류를 직접 발생시켜야 합니다.
해결책:
이 문제를 해결하고 HTTP 상태에 따라 Promise를 거부하려면
import 'whatwg-fetch'; function fetchVehicle(id) { return dispatch => { return dispatch({ type: 'FETCH_VEHICLE', payload: fetch(`http://swapi.co/api/vehicles/${id}/`) .then(res => { if (!res.ok) { const error = new Error('HTTP Error: ' + res.status); throw error; // Throwing the error here will cause fetch to reject the promise } return res; }) .then(res => res.json()) .catch(error => { throw error; }) }); }; }
가져오기 Promise 내에 오류 처리 논리를 도입하면 이제 HTTP 응답 상태가 성공하지 못한 조건을 나타내는 경우 Promise를 수동으로 거부할 수 있습니다. 이를 통해 redux 미들웨어의 catch 블록에서 오류를 적절하게 캡처하고 처리할 수 있습니다.
위 내용은 HTTP 상태 코드를 기반으로 가져오기 약속을 수동으로 거부하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!