Verwendung von async und await
Die Funktionen der JavaScript-Laufzeitumgebung 2.0 in CloudFront Functions bieten eine async- und await-Syntax für die Verarbeitung von Promise-Objekten. Promises stellen verzögerte Ergebnisse dar, auf die über das await-Schlüsselwort in Funktionen zugegriffen werden kann, die als async gekennzeichnet sind. Verschiedene neue WebCrypto-Funktionen verwenden Promises.
Weitere Informationen über Promise-Objekte finden Sie unter Promise
Anmerkung
Sie müssen die JavaScript-Laufzeitumgebung 2.0 für die folgenden Codebeispiele verwenden.
await kann nur innerhalb von async-Funktionen verwendet werden. async-Argumente und -Schließungen werden nicht unterstützt.
async function answer() { return 42; } // Note: async, await can be used only inside an async function. async arguments and closures are not supported. async function handler(event) { // var answer_value = answer(); // returns Promise, not a 42 value let answer_value = await answer(); // resolves Promise, 42 console.log("Answer"+answer_value); event.request.headers['answer'] = { value : ""+answer_value }; return event.request; }
Der folgende JavaScript-Beispielcode zeigt, wie Promises mit der Methode then-Chain angezeigt werden. Sie können catch verwenden, um Fehler anzuzeigen.
Warnung
Die Verwendung von Promise-Kombinatoren (z. B. Promise.all, Promise.any) und Promise-Verkettungsmethoden (z. B. then und catch) kann eine hohe Auslastung des Funktionsspeichers erfordern. Wenn Ihre Funktion das maximale Funktionsspeicherkontingent überschreitet, kann sie nicht ausgeführt werden. Um diesen Fehler zu vermeiden, empfehlen wir Ihnen, die await-Syntax anstelle von promise-Methoden zu verwenden.
async function answer() { return 42; } async function squared_answer() { return answer().then(value => value * value) } // Note: async, await can be used only inside an async function. async arguments and closures are not supported. async function handler(event) { // var answer_value = answer(); // returns Promise, not a 42 value let answer_value = await squared_answer(); // resolves Promise, 42 console.log("Answer"+answer_value); event.request.headers['answer'] = { value : ""+answer_value }; return event.request; }