2016-05-16 11 views
0

Ich verwende ein Knotenmodul, das jemand anderes geschrieben hat. Es gibt ein Versprechen zurück. Ich möchte entweder eine Zeichenfolge oder eine new Error() zurückgeben, abhängig davon, ob das Promise-Objekt vom Modul zurückgegeben wurde oder nicht. Wie kann ich das machen?Einen Wert von einer Funktion zurücksenden, abhängig davon, ob ein Versprechen aufgelöst wurde oder nicht

Ich kann nicht innerhalb der finally() Rückruf entweder weil return würde für die Callback-Funktion nicht meine task Funktion.

+0

Warum können Sie das Modul nicht wie es ist verwenden? –

Antwort

0

dbConnection.then().catch() wird sich selbst ein Versprechen zurückgeben. In diesem Sinne können wir den Code einfach als return dbConnection.then() schreiben und der Code, der die Funktion verwendet, den Rückgabewert als Versprechen behandeln. Zum Beispiel

var task = function() { 
    return dbConnection.then(function() { 
    return "Good thing!" 
    }).catch(function() { 
    return new Error("Bad thing.") 
    }) 
} 

task().then(function(result){ 
    // Operate on the result 
} 
0
const dbConnection = require("../dbConnection");  

var task = function() { 
    var response = ""; 
    return dbConnection.then(function() { 
    //do something here 
    response = "some value"; 
    return response; 
    }) 
    .catch(function() { 
    response = new Error("could not connect to DB"); 
    return response; 
    }); 
} 

Dies wird wieder ein Versprechen die Sie dann Kette.

Die Verwendung von Versprechungen ähnelt der Verwendung von Rückrufen. Sie möchten nicht, dass die CPU dort auf eine Antwort wartet.

Verwandte Themen