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
Barbara StreisandOriginal
2024-12-07 07:50:13284Durchsuche

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();
}

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();
  });
}

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);
  });

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,
}
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!

Stellungnahme:
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