2016-07-28 7 views
5

In einem Asynchron-Funktion, kann ich einen asynchronen Wert wie so erhalten:Kette async Funktionen

const foo = await myAsyncFunction()

Wenn ich eine Methode für das Ergebnis mit einer Sync-Funktion aufrufen möchte ich etwas tun würde, wie myAsyncFunction().somethingElse()

Ist es möglich, Anrufe mit asynchronen Funktionen zu verketten, oder müssen Sie für jedes Ergebnis eine neue Variable zuweisen?

+1

Sie wissen nicht, über ES7, sondern auch in anderen Sprachen, die Sie verwenden Klammern um die 'await' Ausdruck Kettenfunktionen. – 4castle

+1

'awar myAsyncFunction(). Dann (x => x.irgendwasElse())' :-) – Bergi

+0

'async/await' ist nicht Teil von ES7. –

Antwort

14

Sie können in einem Ausdruck warten und müssen ihn keiner neuen Variablen zuweisen.

const foo = await (await myAsyncFunction()).somethingElseAsync() 

Oder wenn Sie eine Synchronisierungsmethode auf das Ergebnis nennen:

const foo = (await myAsyncFunction()).somethingElseSync() 
+6

Nicht sicher, ob das offensichtlich war, aber das äußere 'gonna' wird nur benötigt, wenn' somethingElse' ebenfalls async ist. – 4castle

+0

@ 4castle Antwort wurde für Klarheit auf diesem – RyanZim

+0

bearbeitet, was ist, wenn die erste Methode 'sync' ist und die zweite' async'? – NSjonas