Wie, um Werte aus einem Versprechen, mit node.js ohne .dann-Funktion
Ich habe ein problem mit einem Versprechen, mit node.js. Mein code ist unten:
var p1 = new Promise(function(resolve, reject) {
//my function here
});
p1.then(function(result){
//my result
});
Dieser code funktioniert aber, um Werte aus p1
ich muss die .then
Methode und mein Ergebnis Werte zugegriffen werden kann nur auf p1.then
. Wie erhalte ich Zugang zu p1
Werte ohne .then
?
Unten sind meine erwartete Ergebnisse:
var p1 = new Promise(function(resolve, reject) {
//my function here
});
var abc = NextFunction(p1);
Den p1
Werte verwendet werden, die anschließend in code außerhalb der p1
variable.
Sie kann es nicht. Alles, was Sie tun, ohne
Können Sie uns ein bisschen mehr Kontext zu dem eigentlichen problem, das Sie lösen möchten, oder das Ziel, das Sie erreichen möchten?
then
passieren würde, bevor der Wert verfügbar ist.Können Sie uns ein bisschen mehr Kontext zu dem eigentlichen problem, das Sie lösen möchten, oder das Ziel, das Sie erreichen möchten?
InformationsquelleAutor monoy suronoy | 2015-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
p1 ist ein
Promise
Sie haben zu warten, bis es zu bewerten und verwenden Sie die Werte wie erforderlich sind Versprechen.Können Sie hier Lesen: http://www.html5rocks.com/en/tutorials/es6/promises/
Obwohl die
result
ist nur innerhalb der Funktion gelöst, Sie können erweitern es mit einer einfachen variableAber bewusst sein zu verwenden
res
nur nach dem Versprechen gelöst, wenn man abhängig ist, Wert, rufen Sie die nächste Funktion aus dem inneren des.then
wie diese:Weil das Element nur Hinzugefügt, wenn das Versprechen aufgelöst wird. die Linie
p1.then(function(result){...})
nur definiert die callback-Funktion, also die nächste Zeile wäre Ihreconsole.log
. Sie sollten hinzufügen, um das array in der Funktion in.then
. Zeigen Sie es mit einemsetTimeout(function() { console.log(myarray); }, 5000);
ah, ja...du Recht mit der Verwendung von setTimeout meine Werte auf myarray können den Zugriff auf außerhalb p1, danke @AlexD
Dies ist sehr schlechte Praxis mit timeout warten, bis ein Versprechen zu lösen, so versuchen, die entsprechenden code in die .dann
Ich kann nicht damit es funktioniert. jsfiddle.net/DAcWT/463 ich will einfach nur, um den aktuellen Wert der variable.
InformationsquelleAutor AlexD
Können Sie erwarten, nachdem das Versprechen aufgelöst wird oder abgelehnt wird.
Bewusst sein
await
Ausdruck muss inasync
Funktion.InformationsquelleAutor toadead
Können Sie dies tun, mit der deasync Modul
InformationsquelleAutor Sunding Wei