ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で HTTP フェッチリクエストを中断するにはどうすればよいですか?

JavaScript で HTTP フェッチリクエストを中断するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-23 05:19:08
オリジナル
1041 人が閲覧しました

How Can I Interrupt HTTP Fetch Requests in JavaScript?

キャンセルによる HTTP フェッチ リクエストの中断

JavaScript での fetch() の導入により、HTTP リクエストの処理に革命が起こり、多用途で直感的なインターフェイスが提供されました。ただし、これらのリクエストを途中で終了する機能に関して懸念が生じることがよくあります。

fetch() の中止メカニズム

2017 年 9 月の時点で、fetch() には重要な機能拡張が組み込まれています。つまり、signal パラメーターのサポートです。 。このパラメータを使用すると、開発者は AbortController とそれに対応する AbortSignal を使用してリクエストをキャンセルできます。当初、ブラウザのサポートは限定的でしたが、現在 (2020 年 3 月現在) ほとんどの主要なブラウザ (Edge、Firefox、Chrome、Safari、Opera など) がこの機能を完全に採用しています。

実装

キャンセルプロセスには 4 つのステップが含まれます:

  1. AbortController:
const controller = new AbortController()
ログイン後にコピー
  1. AbortSignal を取得します:
const signal = controller.signal
ログイン後にコピー
  1. にシグナルを渡しますfetch():
fetch(urlToFetch, {
    method: 'get',
    signal: signal,
})
ログイン後にコピー
  1. 必要に応じてリクエストを中止します:
controller.abort();
ログイン後にコピー

でどのように動作するかを説明するには練習として、次の例を考えてみましょう。

// Create an instance.
const controller = new AbortController()
const signal = controller.signal

/*
// Register a listenr.
signal.addEventListener("abort", () => {
    console.log("aborted!")
})
*/


function beginFetching() {
    console.log('Now fetching');
    var urlToFetch = "https://httpbin.org/delay/3";

    fetch(urlToFetch, {
            method: 'get',
            signal: signal,
        })
        .then(function(response) {
            console.log(`Fetch complete. (Not aborted)`);
        }).catch(function(err) {
            console.error(` Err: ${err}`);
        });
}


function abortFetching() {
    console.log('Now aborting');
    // Abort.
    controller.abort()
}
ログイン後にコピー

を呼び出すことでcontroller.abort() を使用すると、リクエストはいつでも中断できます。

以上がJavaScript で HTTP フェッチリクエストを中断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート