Heim > Web-Frontend > js-Tutorial > Wie kann ich native XHR-Anfragen mithilfe von Versprechen vereinfachen?

Wie kann ich native XHR-Anfragen mithilfe von Versprechen vereinfachen?

Barbara Streisand
Freigeben: 2024-12-07 07:50:13
Original
306 Leute haben es durchsucht

How Can I Simplify Native XHR Requests Using Promises?

Native XHR versprechen: Ein vereinfachter Ansatz

In Frontend-Anwendungen bieten native Versprechen eine bequeme Möglichkeit, asynchrone Vorgänge abzuwickeln. Allerdings kann die Einbindung in native XHR-Anfragen eine Herausforderung darstellen, ohne auf komplexe Frameworks angewiesen zu sein. Ziel dieses Artikels ist es, diese Lücke zu schließen, indem er eine vereinfachte Anleitung zur Bereitstellung nativer typischer Callback-basierter Ansatz. Hier ist ein Beispiel für eine einfache XHR-Anfrage unter Verwendung von Rückrufen:

Dieser Ansatz eignet sich gut für einfache Szenarien, es mangelt ihm jedoch an der Flexibilität und Zusammensetzbarkeit, die Versprechen bieten.

Promisification using der Promise-Konstruktor

function makeXHRRequest(method, url, done) {
  var xhr = new XMLHttpRequest();
  xhr.open(method, url);
  xhr.onload = function () {
    done(null, xhr.response);
  };
  xhr.onerror = function () {
    done(xhr.response);
  };
  xhr.send();
}
Nach dem Login kopieren

Um XHR-Anfragen zu versprechen, können wir den Promise-Konstruktor nutzen. Dieser Konstruktor akzeptiert eine Funktion mit zwei Argumenten, „resolve“ und „reject“, die als Rückrufe für Erfolg bzw. Misserfolg betrachtet werden können.

Aktualisieren wir makeXHRRequest, um den Promise-Konstruktor zu verwenden:

Dieser Code initialisiert ein neues Promise, öffnet eine XHR-Anfrage und behandelt sowohl Erfolg als auch Fehler Szenarien.

Verkettung und Fehlerbehandlung

function makeRequest(method, url) {
  return new Promise(function (resolve, reject) {
    var xhr = new XMLHttpRequest();
    xhr.open(method, url);
    xhr.onload = function () {
      if (xhr.status >= 200 && xhr.status < 300) {
        resolve(xhr.response);
      } else {
        reject({
          status: xhr.status,
          statusText: xhr.statusText
        });
      }
    };
    xhr.onerror = function () {
      reject({
        status: xhr.status,
        statusText: xhr.statusText
      });
    };
    xhr.send();
  });
}
Nach dem Login kopieren

Promises bieten eine leistungsstarke Möglichkeit, mehrere XHR-Anfragen zu verketten und Fehler effektiv zu behandeln. Hier ist ein Beispiel für die Verkettung von Anfragen und die Behandlung von Fehlern:

In diesem Code stellen wir zunächst eine GET-Anfrage an „example.com“ und dann, basierend auf der Antwort, eine weitere GET-Anfrage an ein anderer Endpunkt (in der Antwort angegeben). Alle bei einer Anfrage auftretenden Fehler werden von der Catch-Klausel behandelt.

Benutzerdefinierte Parameter und Header

makeRequest('GET', 'https://www.example.com')
  .then(function (datums) {
    return makeRequest('GET', datums.url);
  })
  .then(function (moreDatums) {
    console.log(moreDatums);
  })
  .catch(function (err) {
    console.error('Augh, there was an error!', err.statusText);
  });
Nach dem Login kopieren

Um unser XHR-Versprechen vielseitiger zu gestalten, können wir die Parameter und anpassen Kopfzeilen. Wir führen ein opts-Objekt mit der folgenden Signatur ein:

Hier ist eine modifizierte Version von makeRequest, die benutzerdefinierte Parameter und Header ermöglicht:

Diese Version bietet mehr Flexibilität in Erstellen von XHR-Anfragen, sodass Sie benutzerdefinierte Parameter und Header angeben können.

{
  method: String,
  url: String,
  params: String | Object,
  headers: Object,
}
Nach dem Login kopieren
Zusammenfassend lässt sich sagen, dass das Versprechen von XHR-Anfragen mithilfe nativer Versprechen ein unkomplizierter Ansatz ist, der Verbesserungen bringt die Flexibilität und Zusammensetzbarkeit Ihres Frontend-Codes. Damit können Sie ganz einfach asynchrone XHR-Anfragen stellen, diese verketten und Fehler effektiv behandeln. Durch die Nutzung der in diesem Artikel besprochenen Konzepte können Sie das Potenzial nativer Versprechen für die Entwicklung Ihrer Frontend-Anwendungen erschließen.

Das obige ist der detaillierte Inhalt vonWie kann ich native XHR-Anfragen mithilfe von Versprechen vereinfachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage