首頁 > web前端 > js教程 > 主體

如何在 JavaScript 中中斷 HTTP 取得請求?

Susan Sarandon
發布: 2024-11-23 05:19:08
原創
989 人瀏覽過

How Can I Interrupt HTTP Fetch Requests in JavaScript?

透過取消來中斷 HTTP 提取請求

JavaScript 中 fetch() 的引入徹底改變了 HTTP 請求處理,提供了通用且直觀的介面。然而,人們常常擔心是否能夠提前終止這些請求。

fetch() 中的中止機制

截至 2017 年 9 月,fetch() 引入了一項重大增強功能:支援訊號參數。此參數允許開發人員使用 AbortController 及其對應的 AbortSignal 取消請求。最初,瀏覽器支援有限,但現在(截至 2020 年 3 月),大多數主要瀏覽器(Edge、Firefox、Chrome、Safari、Opera 等)完全支援此功能。

實作

取消過程涉及四個步驟:

  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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板