Maison > interface Web > js tutoriel > Comment puis-je interrompre les requêtes de récupération HTTP en JavaScript ?

Comment puis-je interrompre les requêtes de récupération HTTP en JavaScript ?

Susan Sarandon
Libérer: 2024-11-23 05:19:08
original
1045 Les gens l'ont consulté

How Can I Interrupt HTTP Fetch Requests in JavaScript?

Interruption des requêtes de récupération HTTP avec annulation

L'introduction de fetch() dans JavaScript a révolutionné la gestion des requêtes HTTP, offrant une interface polyvalente et intuitive. Cependant, des inquiétudes surviennent souvent quant à la possibilité de mettre fin à ces requêtes prématurément.

Mécanismes d'abandon dans fetch()

Depuis septembre 2017, fetch() a incorporé une amélioration significative : la prise en charge du paramètre signal . Ce paramètre permet aux développeurs d'annuler les requêtes à l'aide d'un AbortController et de son AbortSignal correspondant. Au départ, la prise en charge des navigateurs était limitée, mais désormais (depuis mars 2020), la plupart des principaux navigateurs (Edge, Firefox, Chrome, Safari, Opera et autres) adoptent pleinement cette fonctionnalité.

Mise en œuvre

Le processus d'annulation comprend quatre étapes :

  1. Créer un AbortController :
const controller = new AbortController()
Copier après la connexion
  1. Obtenir le AbortSignal :
const signal = controller.signal
Copier après la connexion
  1. Passez le signal pour récupérer() :
fetch(urlToFetch, {
    method: 'get',
    signal: signal,
})
Copier après la connexion
  1. Abandonner la demande à chaque fois souhaité :
controller.abort();
Copier après la connexion

Exemple

Pour illustrer comment cela fonctionne dans la pratique, considérons l'exemple suivant :

// 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()
}
Copier après la connexion

En appelant controller.abort() , la demande peut être interrompue à tout moment.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal