recherche
Maisoninterface Webtutoriel CSSUtiliser AbortController comme alternative pour supprimer les auditeurs d'événements

Utiliser AbortController comme alternative pour supprimer les auditeurs d'événements

Depuis son introduction en 2017, AbortController a fourni un mécanisme puissant pour annuler les demandes fetch() . Cette capacité s'étend au-delà des appels d'API simples, offrant des solutions élégantes pour gérer les auditeurs d'événements, en particulier dans des scénarios tels que les interactions glisser-déposer.

Un exemple simple montre l'annulation d'une demande fetch() :

 const Controller = new AbortController ();
const res = fetch ('/', {signal: contrôleur.signal});
contrôleur.Abort ();
console.log (res); // => Promise (rejeté): "Domexception: l'utilisateur a abandonné une demande"

AbortController améliore également la manipulation du délai d'expiration, offrant une alternative plus propre à setTimeout :

 Timeout de fonction (durée, signal) {
  retourner la nouvelle promesse ((résoudre, rejeter) => {
    const handle = setTimeout (résolution, durée);
    Signal? .AddeventListener ('Abort', () => {
      ClearTimeout (manche);
      rejeter (nouvelle erreur («about»));
    });
  });
}

// utilisation
const Controller = new AbortController ();
const promest = timeout (10000, Controller.Signal);
contrôleur.Abort ();
console.log (promesse); // => promesse (rejeté): "Erreur: abandonné"

L'avancement significatif, cependant, réside dans le soutien de Chrome 88 à AbortSignal dans addEventListener . Cela permet une approche rationalisée pour supprimer simultanément plusieurs écouteurs d'événements, en remplaçant le besoin de plusieurs appels de removeEventListener .

Considérez un exemple de glisser-déposer. Auparavant, la gestion des événements mousedown , mousemove et mouseup a nécessité une suppression explicite à l'aide de removeEventListener :

 // Utilisation de SupporEventListener
el.addeventListener ('Mousedown', e => {
  if (e.buttons! == 1) return;

  const OnMouseMove = E => {
    if (e.buttons! == 1) return;
    /* travail */
  };

  const onMouseup = e => {
    if (e.buttons & 1) retour;
    Window.removeeventListener («MouseMove», OnMouseMove);
    Window.RemoveEventListener («MouseUp», OnMouseUp);
  };

  Window.AddeventListener («MouseMove», OnMouseMove);
  window.addeventListener ('mouseup', onMouseUp);
});

Avec AbortController , un seul appel abort() supprime proprement tous les auditeurs associés:

 // Utilisation d'AbortController
el.addeventListener ('Mousedown', e => {
  if (e.buttons! == 1) return;

  const Controller = new AbortController ();

  window.addeventListener ('MouseMove', e => {
    if (e.buttons! == 1) return;
    /* travail */
  }, {signal: contrôleur.signal});

  window.addeventListener ('mouseup', e => {
    if (e.buttons & 1) retour;
    contrôleur.Abort ();
  }, {signal: contrôleur.signal});
});

Actuellement, seul Chrome 88 prend en charge entièrement cette intégration AbortSignal avec addEventListener . Alors que d'autres navigateurs prennent en charge AbortController , cette fonctionnalité spécifique n'est pas encore largement implémentée. Un polyfill est disponible pour une compatibilité plus large.

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!

Déclaration
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
Quelle est la spécificité de @rules, comme @keyframes et @media?Quelle est la spécificité de @rules, comme @keyframes et @media?Apr 18, 2025 am 11:34 AM

J'ai eu cette question l'autre jour. Ma première pensée est: une question étrange! La spécificité concerne les sélecteurs, et les rubriques ne sont pas des sélecteurs, donc ... non pertinents?

Pouvez-vous nist @media et @Support Queries?Pouvez-vous nist @media et @Support Queries?Apr 18, 2025 am 11:32 AM

Oui, vous le pouvez, et cela n'a pas vraiment d'importance dans quel ordre. Un préprocesseur CSS n'est pas requis. Il fonctionne dans CSS ordinaire.

Buste de cache de gorgée rapideBuste de cache de gorgée rapideApr 18, 2025 am 11:23 AM

Vous devriez à coup sûr définir des en-têtes de cache éloignés sur vos actifs comme CSS et JavaScript (et des images et polices et quoi que ce soit d'autre). Cela dit au navigateur

À la recherche d'une pile qui surveille la qualité et la complexité de CSSÀ la recherche d'une pile qui surveille la qualité et la complexité de CSSApr 18, 2025 am 11:22 AM

De nombreux développeurs écrivent sur la façon de maintenir une base de code CSS, mais peu d'entre eux écrivent sur la façon dont ils mesurent la qualité de cette base de code. Bien sûr, nous avons

Le datalist est destiné à suggérer des valeurs sans appliquer de valeursLe datalist est destiné à suggérer des valeurs sans appliquer de valeursApr 18, 2025 am 11:08 AM

Avez-vous déjà eu un formulaire qui devait accepter un petit texte arbitraire? Comme un nom ou autre chose. C'est exactement à quoi sert. Il y a beaucoup de

Conférence avant à ZurichConférence avant à ZurichApr 18, 2025 am 11:03 AM

Je suis tellement excité de me diriger vers Zurich, en Suisse pour la conférence de Front (j'adore ce nom et URL!). Je n'ai jamais été en Suisse auparavant, donc je suis excité

Construire une application sans serveur complète avec des travailleurs CloudFlareConstruire une application sans serveur complète avec des travailleurs CloudFlareApr 18, 2025 am 10:58 AM

L'un de mes développements préférés dans le développement de logiciels a été l'avènement de Serverless. En tant que développeur qui a tendance à s'enliser dans les détails

Création de routes dynamiques dans une application NuxtCréation de routes dynamiques dans une application NuxtApr 18, 2025 am 10:53 AM

Dans cet article, nous utiliserons une démo de magasin de commerce électronique que j'ai construit et déployé sur Netlify pour montrer comment nous pouvons faire des itinéraires dynamiques pour les données entrantes. C'est assez

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.