使用 async 和 await - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 async 和 await

CloudFront Functions JavaScript 執行期函數 2.0 提供 asyncawait 語法來處理Promise物件。Promises 代表可以透過函數中標記為 async 的關鍵字 await 存取延遲結果。各種新的 WebCrypto 函數使用 Promises。

如需 Promise 物件的詳細資訊,請參閱 Promise

注意

您必須針對下列程式碼範例使用 JavaScript 執行期 2.0。

await 只能在 async 函數內使用。不支援引async數和關閉。

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; }

下面的範例 JavaScript 程式碼顯示如何使用 then 鏈接方法查看 Promises。您可以使用 catch 來檢視錯誤。

警告

使用 promise 組合器 (例如 、 Promise.allPromise.any和 promise 鏈結方法 (例如 thencatch) 可能需要高函數記憶體用量。如果您的函數超過函數記憶體配額上限,則無法執行。為了避免此錯誤,建議您使用 await 語法,而非 promise方法。

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; }