Mein Java-trainierter Verstand hat immer noch Schwierigkeiten, Javascript und die Verwendung von Versprechungen zu verstehen. Ich habe folgendes Setup:Wie man einen Wert, der von einem Versprechen für mehrere Funktionen zurückgegeben wird, richtig wieder verwendet
function foo() {
return Promise.resolve('foo');
}
Funktion foo einen Wert zurückgibt, die in beiden Funktionen bar und baz benötigt wird:
function bar(foo) {
// process and use foo
return Promise.resolve('bar');
}
function baz(foo,bar) {
return Promise.resolve(foo+bar);
}
Da baz()
verwendet das Ergebnis von foo()
und bar()
Ich musste Kette sie wie dies:
foo()
.then((foo)=>{
return bar(foo)
.then((bar)=>{
return baz(foo,bar);
})
})
.then(console.log);
Abhängig von der Anzahl der Funktionen, die baz
folgen (die auch die Ergebnisse brauchen der vorherigen Funktionen) scheint dies ziemlich schnell hässlich zu werden.
Gibt es einen alternativen Weg, der einfacher zu lesen ist/einfacher?
Vielleicht 'Promise.all'? – gcampbell
Ein Versprechensobjekt ist unveränderlich. Sobald Sie es gelöst haben, bleibt es so lange, wie Sie die Browser-Registerkarte schließen. Sobald Sie mögen 'pr = foo(); pr.then (function (val) {doSomething (val)}) '' val' wird nicht ändern, wie oft Sie pr.then() getrennt aufrufen. Auf diese Weise können Sie den Rückgabewert des Versprechens in so vielen anderen Funktionen teilen, wie Sie möchten. – Redu