Heim > Web-Frontend > js-Tutorial > Wie kann die Versprechensverkettung verschachtelte Versprechen in asynchronen Vorgängen vereinfachen?

Wie kann die Versprechensverkettung verschachtelte Versprechen in asynchronen Vorgängen vereinfachen?

Barbara Streisand
Freigeben: 2024-12-10 15:10:14
Original
288 Leute haben es durchsucht

How Can Promise Chaining Simplify Nested Promises in Asynchronous Operations?

Auflösen verschachtelter Versprechen

Einführung

Verschachtelte Versprechen können entstehen, wenn mit asynchronen Vorgängen gearbeitet wird, die aufeinander aufbauen. Im bereitgestellten Code stellt die viewFile-Funktion mithilfe von boxContentRequest und boxViewerRequest mehrere Netzwerkanfragen. Diese Anfragen sind derzeit in verschachtelten Versprechen strukturiert, was es schwierig macht, dem Code zu folgen.

Versprechen verketten

Um die verschachtelten Versprechen zu eliminieren, können wir die Verkettung von Versprechen verwenden. Diese Technik ermöglicht es uns, mehrere asynchrone Vorgänge sequentiell zu verbinden, wobei die Ausgabe eines Versprechens zur Eingabe des nächsten wird.

Refaktorierter Code

Der überarbeitete Code unten erreicht das gewünschte Ergebnis Verkettung:

exports.viewFile = function (req, res) {
  var fileId = req.params.id;
  boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken)
    .then(function (response) {
      // Return the next promise directly
      return boxViewerRequest('documents', { url: response.request.href }, 'POST');
    })
    .then(function (response) {
      // Return the final promise directly
      return boxViewerRequest('sessions', { document_id: response.body.id }, 'POST');
    })
    .then(function (response) {
      console.log(response);
    });
};
Nach dem Login kopieren

Erklärung

Im überarbeiteten Code geben wir das nächste Versprechen direkt von jedem Rückruf zurück. Dadurch können wir die Versprechen nahtlos verketten und sicherstellen, dass der Ausführungsablauf der gewünschten Reihenfolge folgt.

Generisches Muster für die Versprechensverkettung

Das generische Muster für die Versprechensverkettung ist wie folgt :

// Option 1: Single-line syntax
somePromise
  .then((r1) => nextPromise)
  .then((r2) => anyValue);

// Option 2: Multi-line syntax
somePromise
  .then(function (r1) {
    return nextPromise;
  })
  .then(function (r2) {
    return anyValue;
  });
Nach dem Login kopieren

Beide Optionen lösen das endgültige Versprechen mit dem Wert von anyValue auf. Dieses Muster bietet eine prägnante und elegante Möglichkeit, asynchrone Vorgänge zu verbinden, die Codestruktur zu vereinfachen und die Lesbarkeit zu verbessern.

Das obige ist der detaillierte Inhalt vonWie kann die Versprechensverkettung verschachtelte Versprechen in asynchronen Vorgängen 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