2016-12-16 4 views
0

Betrachtet man das Beispiel:Rückgabewert von Promise

function returnValue() { 
   return somePromise.then (
     function (someThing) { 
       return { 
         sucess: true, 
         data: someThing 
       } 
     }, 
     function (someError) { 
       return { 
         sucess: false, 
         data: someError 
       } 
     } 
  ) 
} 

Console.log (returnValue()) 

Was soll ich so tun, dass ich tatsächlich „etwas“ oder „someError“? Und kein Versprechen ausstehend?

Nur zu beachten ... wenn ich einen Code wie diesen in "Meteor.methods" schreibe, funktioniert es genau so, wie ich es möchte, das heißt, es gibt einen Wert zurück, den ich an den Client, aber außerhalb von "Meteor .methods "oder im Client (Browser, mit oder ohne Rahmen) der, den ich habe, ist ein Promise ausstehend.

Antwort

0

Die Funktion, die an übergeben wird, gibt Ergebnisse asynchron zurück. Die Promisevalue der erfüllten Promise wird als Argument der übergebenen Funktion zur Verfügung stehen. Console.log (returnValue()), wie Sie notiert haben, protokolliert die Promise selbst, nicht die Promisevalue. Kette .then() zu returnValue() Anruf. Außerdem sollte Console.log (returnValue())console.log() sein.

let somePromise = Promise.resolve("abc"); 
 

 
function returnValue() { 
 
    return somePromise.then (
 
    function (someThing) { 
 
     return { 
 
     sucess: true, 
 
     data: someThing 
 
     } 
 
    }, 
 
    function (someError) { 
 
     return { 
 
     sucess: false, 
 
     data: someError 
 
     } 
 
    } 
 
    ) 
 
} 
 

 
returnValue().then(function(result) { 
 
    console.log(result) 
 
})

+0

Richtig, aber nicht, dass der Wert nicht nehmen aus dem Versprechen, oder sollte ich akzeptieren, dass dies vom Browser nicht möglich ist? – rogeriojlle

+0

@rogeriojlle Zögern zu sagen, was "unmöglich" ist. Ich würde vorschlagen, die Spezifikation zu lesen [Promises/A +] (https://promisesaplus.com/) _ "Ein Versprechen stellt das mögliche Ergebnis einer asynchronen Operation dar. Der primäre Weg, mit einem Versprechen zu interagieren, ist durch seine' then' Methode, die Registriert Callbacks, um entweder den möglichen Wert eines Versprechens zu erhalten oder den Grund, warum das Versprechen nicht erfüllt werden kann. "_ Siehe auch [Promises] (https://www.promisejs.org/), [Du vermisst den Punkt der Versprechen] (https://gist.github.com/domenic/3889970#youre-missing-the-point-of- promises). – guest271314

+0

@rogeriojlle Siehe [Was bedeutet \ [\ [PromiseValue \] \] in JavaScript-Konsole und wie ich es verstehe] (http://stackoverflow.com/questions/28916710/what-does-promisevalue-mean-in -java-console-and-how-to-do-i-get-it) – guest271314