使用 async 和 await - Amazon CloudFront

使用 async 和 await

CloudFront Functions JavaScript 執行時期函數 2.0 提供處理 Promise 物件的 asyncawait 語法。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; }