Heim > Web-Frontend > js-Tutorial > Wie können verschachtelte Node.js-Promises in eine verkettete Sequenz umgewandelt werden?

Wie können verschachtelte Node.js-Promises in eine verkettete Sequenz umgewandelt werden?

Patricia Arquette
Freigeben: 2024-12-14 11:57:11
Original
550 Leute haben es durchsucht

How Can Nested Node.js Promises Be Transformed into a Chained Sequence?

Entschlüsseln verschachtelter Versprechen

NodeJS-Versprechen bieten einen leistungsstarken Mechanismus für die Handhabung asynchroner Vorgänge. Allerdings können verschachtelte Versprechen zu Codekomplexität führen. Diese Frage befasst sich mit der Frage, wie verschachtelte Versprechen in eine besser verwaltbare verkettete Sequenz umgewandelt werden können.

Ursprüngliche Codestruktur

Der ursprüngliche Code folgt einem verschachtelten Ansatz, bei dem die Auflösung von Jedes Versprechen löst einen nachfolgenden Versprechensaufruf aus:

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

Verkettung Versprechen

Um Versprechen zu verketten, ist es notwendig, das neue Versprechen aus dem damaligen Rückruf jedes Versprechens zurückzugeben. Dieser Ansatz ermöglicht die sequenzielle Auflösung der verketteten Versprechen.

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

Die modifizierte Codestruktur stellt sicher, dass die Versprechenkette nahtlos fortgesetzt wird, wobei jeder Schritt sein Ergebnis an das nächste Versprechen in der Sequenz weitergibt.

Generisches Muster

Dieses Verkettungsmuster kann wie folgt verallgemeinert werden:

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

Das obige ist der detaillierte Inhalt vonWie können verschachtelte Node.js-Promises in eine verkettete Sequenz umgewandelt werden?. 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