EinführungIm vorherigen Artikel wurden die einfache Kapselung von Axios sowie die Anwendungsszenarien und -methoden von Axios-Interceptors vorgestellt. Sehen wir uns heute an, wie der Interceptor mit Situationen umgeht, in denen die Antwortzeit zu lang und die Anzahl der Anforderungen zu hoch ist. So stornieren Sie eine Anfrage
Offizielles Website-Beispiel 1: Verwenden Sie die Factory-Methode CancelToken.source, um ein Abbruch-Token zu erstellen, wie folgt const CancelToken = axios.CancelToken; const Quelle = CancelToken.source(); axios.get('/Benutzer/12345', { cancelToken: Quelle.Token }).catch(Funktion(geworfen) { wenn (axios.isCancel(geworfen)) { console.log('Anfrage abgebrochen', thrown.message); } anders { // Fehler behandeln } }); axios.post('/Benutzer/12345', { Name: „Neuer Name“ }, { cancelToken: Quelle.Token }) // Anfrage abbrechen (Nachrichtenparameter ist optional) source.cancel('Vorgang vom Benutzer abgebrochen.'); Beispiel 2 von der offiziellen Website: Erstellen Sie ein Abbruchtoken, indem Sie eine Executor-Funktion an den CancelToken-Konstruktor übergeben: const CancelToken = axios.CancelToken; abbrechen lassen; axios.get('/Benutzer/12345', { cancelToken: neues CancelToken(Funktion Executor(c) { // Die Executor-Funktion erhält eine Abbruchfunktion als Parameter cancel = c; }) }); // die Anfrage abbrechen stornieren(); Sie können sehen, dass die oben genannten Abbruchtoken alle in einer einzigen Anfrage erstellt werden. In der tatsächlichen Arbeit müssen wir alle Anfragen verarbeiten. Als nächstes sehen wir uns an, wie die Funktion zum Abbrechen von Anfragen im Interceptor implementiert wird Abbrechen doppelter Anfragen im InterceptorAxios von „Axios“ importieren importiere baseURL aus „./config“ importiere qs von „qs“ const pendingRequest = new Map(); // Anforderungsobjekt const CancelToken = axios.CancelToken; axios.defaults.timeout = 30000 axios.defaults.baseURL = Basis-URL.Ziel // Anfrage-Interceptor hinzufügen axios.interceptors.request.use(function(config) { // Tun Sie etwas, bevor Sie die Anfrage senden config.headers = { 'Inhaltstyp': 'Anwendung/JSON', "Token": getToken() } // Den Anforderungsschlüssel abrufen let requestKey = getReqKey(Konfiguration); // Feststellen, ob es sich um eine wiederholte Anfrage handelt if (pendingRequest.has(requestKey)) { // Es handelt sich um eine wiederholte Anfrage removeReqKey(requestKey); // Abbrechen }else{ // CancelToken setzen config.cancelToken = neues CancelToken(Funktion Executor(Abbrechen) { pendingRequest.set(requestKey, abbrechen); // setzen }) } Konfiguration zurückgeben; }, Funktion (Fehler) { // Anforderungsfehler return Promise.reject(error); }); // Antwort-Interceptor hinzufügen axios.interceptors.response.use(function (response) { // RequestKey im Request-Objekt löschen let requestKey = getReqKey(response.config); entferneReqKey(Anforderungsschlüssel); // Etwas mit den zurückgegebenen Daten machen, zum Beispiel den Status abfangen if (response.data.status !== 200) { Toast({ Nachricht: Antwort.Daten.Nachricht, Typ: "Warnung", Dauer: 1000 }) zurückkehren } // Kein Problem, gib die Serverdaten zurück return response.data; }, Funktion (Fehler) { let requestKey = getReqKey(error.config); entferneReqKey(Anforderungsschlüssel); // Antwortfehler return Promise.reject(error); }); // Den Anforderungsschlüssel abrufen Funktion getReqKey(Konfiguration) { // Der von der Anforderungsmethode, der Anforderungsadresse und den Anforderungsparametern generierte String dient als Grundlage dafür, ob die Anforderung wiederholt werden soll const { method, url, params, data } = config; // Diese Parameter dekonstruieren // GET ---> params POST ---> data const requestKey = [Methode, URL, qs.stringify(Params), qs.stringify(Daten)].join('&'); Anfrageschlüssel zurückgeben; } // Doppelte Anfrage abbrechen function removeReqKey(key) { const cancelToken = pendingRequest.get(Schlüssel); cancelToken(key); // Die zuvor gesendete Anfrage abbrechen pendingRequest.delete(key); // RequestKey im Anfrageobjekt löschen } AbschlussDas Obige ist die Verarbeitung wiederholter Anfragen. Wenn Sie sich über den Interceptor nicht im Klaren sind, können Sie den vorherigen Artikel lesen. Wenn Sie Fragen haben, können Sie mich gerne korrigieren. Ich werde es so schnell wie möglich aktualisieren. Dies ist das Ende dieses Artikels über die häufige wiederholte Anforderungsstornierung des Vue Axios Interceptor. Weitere verwandte Inhalte zur wiederholten Anforderungsstornierung des Axios Interceptor finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
>>: Erste Schritte mit dem Alibaba Cloud ECS-Server (unbedingt zu lesendes Tutorial für Neulinge)
Inhaltsverzeichnis Vorwort 1. Einführung in Axios...
Warum befinden sich die Bildlaufleisten der Brows...
Inhaltsverzeichnis Merkmale Erhaltungsstrategie B...
Hinweis: Diese Methode ist nur auf WebKit-basiert...
Einführung in Vue Die aktuelle Ära der großen Fro...
Hintergrund Durch das flexible Layout wird eine e...
Generieren Sie SSL-Schlüssel und CSR-Datei mit Op...
Die MySQL-Funktionen DATE_ADD(date,INTERVAL expr ...
In diesem Artikelbeispiel wird der spezifische JS...
1. Problem Mehrere schwebende Elemente können die...
In diesem Blog führe ich Sie in einfachen Schritt...
Diese Arbeit nutzt das Wissen der Front-End-Entwi...
Das neue Projekt ist im Grunde abgeschlossen. Es ...
NAT Auf diese Weise wird die Netzwerkkarte der vi...
1. Komponenten installieren yum install epel-rpm-...