Ich habe Async durchlaufen / warten und nachdem ich mehrere Artikel durchgegangen bin, habe ich beschlossen, die Dinge selbst zu testen. Ich kann jedoch nicht sagen, warum das nicht funktioniert:
%Vor%Die Konsole gibt Folgendes aus (Knoten v8.6.0):
& gt; draußen: [Objektversprechen]
& gt; drinnen: Hey da
Warum wird die Protokollnachricht innerhalb der Funktion anschließend ausgeführt? Ich dachte, der Grund dafür, dass async / await erstellt wurde, war die synchrone Ausführung mit asynchronen Tasks.
Gibt es eine Möglichkeit, den in der Funktion zurückgegebenen Wert zu verwenden, ohne .then()
nach main()
?
Ich kann mir nicht vorstellen, warum das nicht funktioniert.
Weil main
eine Verheißung zurückgibt; Alle async
Funktionen tun.
Auf der obersten Ebene müssen Sie entweder:
Verwenden Sie eine Funktion async
auf oberster Ebene, die niemals ablehnt, oder
Verwenden Sie then
und catch
async
Funktion, die niemals ablehnt Beachten Sie die catch
; Sie müssen Verweigerungsverweigerungen / asynchrone Ausnahmen behandeln, da nichts anderes geschieht; Sie haben keinen Anrufer, um sie weiterzugeben. Wenn Sie dies vorziehen, können Sie dies tun, indem Sie es über die Funktion catch
aufrufen (und nicht try
/ catch
):
... was ein bisschen prägnanter ist (ich mag es aus diesem Grund).
then
und catch
... oder beide Argumente für then
:
Beachten Sie erneut, dass wir einen Ablehnungshandler registrieren.
Tags und Links javascript async-await node.js ecmascript-2017