[解決済み】HTTP fetch()リクエストをキャンセルするにはどうすればいいですか?
2022-04-18 18:21:07
質問
JavaScriptからリクエストを行うための新しいAPIがあります。
fetch()
. これらのリクエストを機内でキャンセルする仕組みは組み込まれているのでしょうか?
解決方法は?
TL/DR。
fetch
がサポートされるようになりました。
signal
パラメータは、2017年9月20日現在では、しかし
ではなく
現時点ではすべてのブラウザが対応しているようです
.
2020年UPDATE。 主要ブラウザのほとんど(Edge、Firefox、Chrome、Safari、Opera、他数種) サポートする機能 の一部となっています。 DOMの生活水準 . (2020年3月5日現在)
しかし、これはすぐに見られる変更であるため、リクエストをキャンセルするためには
AbortController
s
AbortSignal
.
ロングバージョン
ハウツー
その方法はこうです。
ステップ1
: を作成します。
AbortController
(とりあえず、私は
これ
)
const controller = new AbortController()
ステップ2
: を取得します。
AbortController
のシグナルはこのようになります。
const signal = controller.signal
ステップ3
: を渡すと
signal
のようにフェッチします。
fetch(urlToFetch, {
method: 'get',
signal: signal, // <------ This is our AbortSignal
})
ステップ4 : 必要なときにいつでも中止してください。
controller.abort();
以下は、その動作例です(Firefox 57+で動作します)。
<script>
// 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()
}
</script>
<h1>Example of fetch abort</h1>
<hr>
<button onclick="beginFetching();">
Begin
</button>
<button onclick="abortFetching();">
Abort
</button>
ソース
関連
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み】AxiosとFetchの違いは何ですか?
-
[解決済み】Fetch APIとXMLHttpRequestの比較
-
[解決済み】ネイティブXHRをプロミス化する方法は?
-
[解決済み] Fetch APIのリクエストタイムアウト?