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