Wrapping Node.js Rückrufe in Versprechen mit Bluebird

8

Wie umgehe ich einen Node.js Callback mit einer Promise in Bluebird? Das ist, was ich mir ausgedacht habe, wollte aber wissen, ob es einen besseren Weg gibt:

%Vor%

Gibt es einen saubereren Weg, dies zu tun, wenn nur ein Fehler zurückgegeben werden muss?

Bearbeiten Ich habe versucht, Promise.promisifyAll () zu verwenden, aber das Ergebnis wird nicht an die then-Klausel weitergegeben. Mein spezifisches Beispiel ist unten gezeigt. Ich benutze zwei Bibliotheken: a) sequelize, die Versprechen verspricht, b) Supertest (zum Testen von http-Anfragen verwendet), die Knoten Stil Callbacks verwendet. Hier ist der Code ohne PromisifyAll. Es ruft sequence auf, um die Datenbank zu initialisieren, und führt dann eine HTTP-Anforderung zum Erstellen der Bestellung aus. Bosth console.log-Anweisungen werden korrekt gedruckt:

%Vor%

Jetzt versuche ich PromisifyAll zu verwenden, damit ich die Aufrufe mit dann verketten kann:

%Vor%

Wenn ich zum zweiten console.log komme, ist das Res-Argument nicht definiert.

%Vor%

Was mache ich falsch?

    
Naresh 31.03.2014, 12:29
quelle

1 Antwort

8

Sie rufen das Versprechen, das die Version zurückgibt, nicht auf und geben es auch nicht zurück.

Versuchen Sie Folgendes:

%Vor%     
Esailija 31.03.2014, 12:59
quelle