Heim > Web-Frontend > js-Tutorial > Wie kann ich Versprechen für saubereren asynchronen JavaScript-Code entschachteln?

Wie kann ich Versprechen für saubereren asynchronen JavaScript-Code entschachteln?

Barbara Streisand
Freigeben: 2024-12-09 22:40:10
Original
750 Leute haben es durchsucht

How Can I Unnest Promises for Cleaner Asynchronous JavaScript Code?

Verketten von Versprechen zum Entfernen verschachtelter Strukturen

Bei der Arbeit mit asynchronen Vorgängen bieten Versprechen eine bequeme Möglichkeit, Rückrufe zu verarbeiten und die Lesbarkeit des Codes aufrechtzuerhalten. Allerdings können verschachtelte Versprechen den Code schnell komplex und schwer verständlich machen. In diesem Artikel wird erläutert, wie Sie verschachtelte Versprechen entfernen und für mehr Klarheit verketten.

Ansatz

Um verschachtelte Versprechen zu entfernen, geben wir bei jedem Rückruf ein neues Versprechen zurück. Dies ermöglicht es uns, die Versprechen nacheinander zu verketten, sodass keine verschachtelten Strukturen erforderlich sind. Hier ist eine modifizierte Version des bereitgestellten Codes:

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

In diesem Code gibt jeder then-Rückruf das Versprechen für die nachfolgende Anfrage zurück und stellt so sicher, dass die Ausführung sequentiell fortgesetzt wird.

Allgemeines Muster

Das Muster für die Verkettung von Versprechen ist wie folgt:

somePromise.then(function(r1) {
    return nextPromise.then(function(r2) {
        return anyValue;
    });
}) // resolves with anyValue

     ||
    \||/
     \/

somePromise.then(function(r1) {
    return nextPromise;
}).then(function(r2) {
    return anyValue;
}) // resolves with anyValue as well
Nach dem Login kopieren

Bei der Rückgabe eines neuen Versprechen, der resultierende Wert aus diesem Versprechen wird an den nächsten Handler in der Kette übergeben. Wenn alternativ das vom Handler zurückgegebene Versprechen das letzte in der Kette ist, wird der Auflösungswert dieses Versprechens an den Verbraucher übergeben.

Das obige ist der detaillierte Inhalt vonWie kann ich Versprechen für saubereren asynchronen JavaScript-Code entschachteln?. 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