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

Grundlegendes Lernen und Erfahrungsaustausch zu MySQL-Transaktionen

Eine Transaktion ist eine logische Gruppe von Ope...

So konfigurieren Sie einen Pfadalias für das React-Scaffolding

Die React-Version beim Schreiben dieses Artikels ...

Implementierung der Funktion zum Speichern von Screenshots aus HTML in PDF

Technologie nutzen itext.jar: Konvertiert den Byt...

Implementieren einer verteilten Sperre mit MySQL

einführen In einem verteilten System ist die vert...

Eine kurze Erläuterung des zugrunde liegenden Prinzips von MySQL Join

Inhaltsverzeichnis Join-Algorithmus Der Unterschi...

Detaillierte Erläuterung der langsamen MySQL-Protokollabfrage

Langsame Protokollabfragefunktion Die Hauptfunkti...

Detaillierte Erläuterung der Verwendung von Docker Commit

Manchmal müssen Sie bestimmte Abhängigkeiten im B...

CocosCreator Skelettanimation Drachenknochen

CocosCreator Version 2.3.4 Drachenknochenanimatio...

Beispielcode für kreisförmigen Hover-Effekt mit CSS-Übergängen

Dieser Artikel stellt vor Online-Vorschau und Dow...

Einführung in MySQL-Anweisungskommentare

MySQL unterstützt drei Arten von Kommentaren: 1. ...