ホームページ >ウェブフロントエンド >jsチュートリアル >ステータス コードが OK でない場合に Fetch Promise を拒否し、エラーをキャッチする方法

ステータス コードが OK でない場合に Fetch Promise を拒否し、エラーをキャッチする方法

DDD
DDDオリジナル
2024-11-24 08:00:12912ブラウズ

How to Reject a Fetch Promise and Catch Errors When the Status Code is Not OK?

ステータスが OK でない場合に Fetch Promise を拒否し、エラーをキャッチする方法?

多くの最新の JavaScript アプリケーションは、Fetch API を使用して HTTP リクエストを作成します。 Fetch API は、Response オブジェクトに解決される Promise オブジェクトを返します。 Response オブジェクトを使用すると、ステータス コード、ヘッダー、および応答の本文にアクセスできます。

場合によっては、サーバーがエラーを示す HTTP ステータス コードで応答することがあります。たとえば、要求されたリソースが見つからない場合、サーバーは 404 ステータス コードで応答する可能性があります。デフォルトでは、サーバーが 2xx 以外のステータス コードで応答した場合、Fetch Promise は拒否されません。

これにより、コード内のエラーの処理が困難になる可能性があります。この問題を解決するには、Promise を解決または拒否する前に、status() 関数を使用して Response オブジェクトのステータス コードを確認します。以下は、ステータス コードが OK でない場合に、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);
});

これコードはエラーをコンソールに記録します。

以上がステータス コードが OK でない場合に Fetch Promise を拒否し、エラーをキャッチする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。