JavaScript Promise chaining

Hendoul

Commander
Registriert
Apr. 2008
Beiträge
2.088
Hi :)

Für mich ist Promise chaining ein bisschen ein Brain-Fuck...

Folgender Pseudo-Code:
getField().callMethodThatReturnsAPromise()
.then
Javascript:
getField().callMethodThatReturnsAPromise()
    .then( () => getField().thisAlsoReturnsAPromise())
    .then( () => ...);

Ist das Chaining so korrekt oder muss ich direkt nach dem Aufruf von thisAlsoReturnsAPromise() auch ein .then() schreiben, also so:
Javascript:
getField().callMethodThatReturnsAPromise()
    .then( () => getField().thisAlsoReturnsAPromise()
        .then( () => ...))
    .then(...);

Oder reicht es so wie im oberen Fall aus?
 
Du musst im then das Promise zurückgeben, also
Javascript:
getField().callMethodThatReturnsAPromise()
    .then( () => return getField().thisAlsoReturnsAPromise())
    .then( () => ...);

Ich empfehle, die alternative await-Syntax zu verwenden.
Javascript:
something = async () => {
    var result = await getField().callMethodThatReturnsAPromise();
    var otherResult = await getField().thisAlsoReturnsAPromise();
    ...
}

Wie oben angedeutet geht dies allerdings nur in async-Methoden.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: mastaqz
Im Lambda Ausdruck kannst du aber kein return nutzen, das ist bereits implizit vorhanden.

Der erste Codeblock im Eingangspost ist richtig.
 
  • Gefällt mir
Reaktionen: abcddcba, pcBauer und fullnewb
Zurück
Oben