Ich denke, es ist eine schlechte Übung, verschiedene Rückgabetypen zu haben. Also, das ist meine Funktion, und ich möchte, dass es immer ein Versprechen gibt.Meine Funktion könnte ein Versprechen oder einen Wert zurückgeben, wie kann man es vermeiden?
Ich habe versucht, das Szenario zu vereinfachen. Nehmen wir an, ich habe zwei Produktlinien (Zeile X und Zeile Y) und die Art, wie ich ein Produkt mit dem Namen abrufe, unterscheidet sich von jeder Zeile völlig von der anderen.
Bitte beachten Sie auch, dass ich im Idealfall wollte eine Funktion zu "oder" zwei Versprechen und Rückgabe, was auch immer das erfolgreich löst. Aber ich könnte mir keinen besseren Weg vorstellen!
ProductService.findProductByName = function findProductByName(name) {
return LineXService.findOneByName(name) // promise
.then(function _returnProduct(product) {
return product
? product // value
: LineYService.findOneByName(name)); // promise
})
};
warte ... das führt immer zu einem Versprechen. Wo ist die Frage? –
@KevinB 'Produkt' ist kein Versprechen, sondern etwas, das durch ein Versprechen zurückgegeben wird. – tadman
Richtig, aber es wird in einem .then Callback zurückgegeben. Die Gesamtfunktion gibt immer noch ein Versprechen. –