HerkunftEine bestimmte Seite muss alle Daten herunterladen, die herunterzuladende Datenmenge ist groß und die Schnittstellenverzögerung ist lang ... Das anfängliche Laden der Daten einer bestimmten Seite dauert lange, aber eine einzelne Suche ist schnell. Wenn die anfänglichen Daten geladen sind, wird die Suchoberfläche zurückgegeben, und die anschließende Rückgabe der anfänglichen Daten deckt die Anzeige der gesuchten Daten ab.... Diese Situationen erfordern von uns:
Status QuoDas System ist eine Sekundärentwicklung basierend auf dem Open Source Vue-Element-Admin von Laoge Huakucha. Die Anfrage verwendet Axios und der Schlüsselcode der gekapselten Anfrage.js lautet wie folgt: // eine Axios-Instanz erstellen const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // URL = Basis-URL + Anforderungs-URL withCredentials: true, // sende Cookies bei domänenübergreifenden Anfragen Timeout: 500000, // Anforderungs-Timeout transformRequest: [Funktion(Daten) { // Führe eine beliebige Konvertierung der Daten aus returniere Qs.stringify({ ...Daten }, // Array-Konvertierung { arrayFormat: 'brackets' }) }] }) // Interceptor anfordern Dienst.Interceptors.Anfrage.Verwenden( Konfiguration => { // etwas tun, bevor die Anfrage gesendet wird wenn (store.getters.token) { // Jede Anfrage soll ein Token enthalten // ['X-Token'] ist ein benutzerdefinierter Header-Schlüssel // Bitte ändern Sie es entsprechend der tatsächlichen Situation config.headers['token'] = getToken() } Konfiguration zurückgeben }, Fehler => { // etwas tun mit dem Anfragefehler console.log(error) // zum Debuggen returniere Promise.reject(Fehler) } ) Methode zum Initiieren der Anfrage: Exportfunktion remoteApi(Daten) { Rückgabeanforderung({ URL: „/API“, Methode: 'post', Daten }) } Anfrage abbrechen cancelTokenSeine offizielle Dokumentation: Abbrechen: 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.'); Geänderte AnfragemethodeExportfunktion remoteApi(Daten, CancelToken) { Rückgabeanforderung({ URL: „/API“, Methode: 'post', Token abbrechen, Daten }) } Erstellen Sie bei einer tatsächlichen Anfrage einen CachelToken: // In der Komponentenmethode this.cancelToken = CancelToken.source() remoreApi(Daten, dies.cancelToken).dann(....).catch(....).finally(....) Um eine Anfrage abzubrechen, führen Sie Folgendes aus: // In der Komponentenmethode this.cancelToken.cancel('Download abbrechen') Vermeidung doppelter AnfragenVermeiden Sie wiederholte Anfragen an eine Schnittstelle, um zu verhindern, dass die Rückgabedaten der Schnittstelle mit einer längeren Verzögerung die Rückgabedaten einer anderen Schnittstelle überschreiben und so Datenanzeigefehler verursacht werden. Die Idee ist relativ einfach: Es wird eine globale Map zum Speichern von Anforderungskennungen und entsprechenden CancelTokens verwendet. Rufen Sie vor dem Initiieren einer Anforderung die Abbruchmethode des entsprechenden Abbruchtokens gemäß der Anforderungskennung auf und geben Sie dann eine neue Anforderung aus, um die Bedingungen zu erfüllen. ZusammenfassenDies ist das Ende dieses Artikels zum Abbrechen von Axios-Anfragen und zum Vermeiden doppelter Anfragen. Weitere Informationen zum Abbrechen von Axios-Anfragen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung des MLSQL-Beispiels zur Berechtigungssteuerung zur Kompilierungszeit
Dokumentumfang Dieser Artikel behandelt den Modus...
Inhaltsverzeichnis 1. Daten vorbereiten Erstellen...
Das Folgende ist ein Balkendiagramm im Flex-Layou...
Dieser Artikel beschreibt die Linux-Dateiverwaltu...
MySQL DDL-Anweisungen Was ist DDL, DML. DDL ist e...
Vorwort Im vorherigen Artikel wurden zwei Datenty...
In diesem Artikel wird der spezifische JavaScript...
Inhaltsverzeichnis Umfeld Version der virtuellen ...
Es gibt drei Möglichkeiten, ein Springboot-Projek...
Die in HTML häufig verwendeten Escape-Zeichen wer...
Definition und Verwendung Die Anzeigeeigenschaft ...
1. Laden Sie das RPM-Paket für Linux herunter htt...
Inhaltsverzeichnis Stile in uni-app Zusammenfasse...
Erstens: 4 Möglichkeiten, CSS einzuführen Es gibt...
Inhaltsverzeichnis 1. Docker installieren 2. Inst...