js implementiert Axios Limit-Anforderungswarteschlange

js implementiert Axios Limit-Anforderungswarteschlange

Der Hintergrund ist:

Bei der tatsächlichen Entwicklung können Netzwerkprobleme oder eine große Anzahl von Abfragen auftreten und der Benutzer kann die nächste Anforderung initiieren, bevor die vorherige Anforderung abgeschlossen ist.

Was wird passieren?

Das mehrmalige Senden derselben Anfrage an den Server belastet den Server jedoch zweifellos. Daher ist es notwendig, die Anfragen am Front-End zu begrenzen, nachdem die Abfragegeschwindigkeit des Servers optimiert wurde und die Netzwerkbedingungen des Benutzers schlecht sind.

Das mit Axios gelieferte CancelToken kann uns dabei helfen, diese Anforderung zu erfüllen, und stellt uns eine vorgefertigte API axios.CancelToken zur Verfügung, eine Rückruffunktion, deren Rückgabewert eine Anforderungsinformation ist. Wir können diese Rückruffunktion ausführen, wenn wir abbrechen müssen. Die konkrete Umsetzung sieht wie folgt aus:

const service = axios.create({});
const pendingMap = neue Map();
const addPendding = (Konfiguration) => {
 config.cancelToken = config.cancelToken || neues axios.CancelToken(abbrechen => {
  wenn (!pendingMap.has(config.url)){
   penddingMap.set(Konfigurations-URL,Abbrechen);
  }
 })
}

const removePendding = (Konfiguration) => {
 wenn (pendingMap.has(config.url)){
  let abbrechen = penddingMap.get(config.url);
    Abbrechen (Konfigurations-URL);
    penddingMap.delete(Konfigurations-URL)
 }
}

Eine Map wird lokal verwaltet, um alle Anforderungsinformationen zu speichern. In addPendding wird zunächst ermittelt, ob ein cancelToken vorhanden ist. Wenn dies der Fall ist, muss kein cancelToken neu erstellt werden. Bei removePendding wird ermittelt, ob die Anforderungsinformationen in der Map vorhanden sind. Wenn die Anforderung in der Map vorhanden ist, wird die Abbruchfunktion ausgeführt und die Anforderung in der Map gelöscht.

Spezifische Anwendung im Abfangjäger:

service.interceptors.request.use(config => {
 removePending(config) // Wenn es in der Map vorhanden ist, breche zuerst die Anfrage ab addPending(config) // Füge die Anfrage der Map hinzu return config
})

service.interceptors.response.use(response => {
 ``` // etwas Code
  Antwortdaten zurückgeben
}, Fehler => {
 // Abbruchanforderung erfassen und if(error instanceof Cancel){ auslösen.
    error.message = „Die vorherige Anfrage ist noch nicht beendet, bitte warten~“;
    Nachricht.Fehler(Fehlernachricht);
    returniere Promise.reject(Fehler.Antwort) 
  // Achten Sie hier auf den Wurf, rufen Sie try-catch auf, um ihn beim Anfordern zu erfassen})
)

Sobald das Abfangen hier erfolgreich ist, können mehrere Anfragen mit großem Datenverkehr begrenzt werden.

Dies ist nur ein Beispiel. Sie können auch steuern, ob der Benutzer eine Anfrage initiiert, indem Sie die Schaltflächenlogik beurteilen.

Dies ist das Ende dieses Artikels über die Implementierung der Axios-Begrenzung der Anforderungswarteschlange durch JS. Weitere relevante Inhalte zur Begrenzung der Axios-Anforderungswarteschlange durch JS finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So verwenden Sie Promise in JavaScript, um die Anzahl gleichzeitiger Anfragen zu steuern
  • Beispielcode für die Verwendung von js zur Implementierung gleichzeitiger Ajax-Anfragen, um die Anzahl der Anfragen zu begrenzen
  • gin JSON-Text der Post-Anforderung abrufen
  • JS implementiert Anforderungsdispatcher
  • PHP implementiert die Konvertierung von Chrome-Formularanforderungsdaten in JSON-Daten, die von der Schnittstelle verwendet werden
  • Detaillierte Erläuterung mehrerer Lösungen für JavaScript-Unterbrechungsanforderungen

<<:  Eine kurze Analyse der Unterschiede zwischen „:=“ und „=“ in MySQL

>>:  So verwenden Sie Docker-Compose zum Erstellen eines ELK-Clusters

Artikel empfehlen

Detaillierte Erklärung der Verwendung des MySQL-Paradigmas

1. Paradigma Der englische Name des Paradigmas la...

Vue implementiert das Umschalten des Anmeldetyps

In diesem Artikelbeispiel wird der spezifische Co...

Schleifenmethoden und verschiedene Durchlaufmethoden in js

Inhaltsverzeichnis for-Schleife While-Schleife do...

Ubuntu 20.04: Beispiel zum Ändern der IP-Adresse

veranschaulichen: Als ich heute das letzte Experi...

Eine kurze Analyse des Funktionsaufrufprozesses unter der ARM-Architektur

Inhaltsverzeichnis 1. Hintergrundwissen 1. Einfüh...

Lösen Sie das Problem, dass die mit nginx erhaltene IP-Adresse 127.0.0.1 ist

Holen Sie sich das IP-Tool importiere lombok.exte...

So kapseln Sie Axios in Vue

Inhaltsverzeichnis 1. Installation 1. Einleitung ...

Über React Native, das keine Verbindung zum Simulator herstellen kann

React Native kann native iOS- und Android-Apps ba...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.19

In diesem Artikel wird das grafische Tutorial zur...

So zeigen Sie Anwendungsprotokolle von Docker-Containern an

Docker-Attach-Befehl docker attach [options] 容器st...