FetchEvent
更新時間 2023-12-13 15:33:05
最近更新時間: 2023-12-13 15:33:05
分享文章
本文介紹函數運行時中FetchEvent的定義與用法。
分配給運行時的HTTP請求的事件類型。詳細定義請參見MDN官方文檔FetchEvent。
上下文
addEventListener("fetch", event => {
event.respondWith(handleRequest(event))
})
屬性
- event.request
Request- 觸發FetchEvent的HTTP請求。
方法
當運行時腳本收到請求時,運行時將觸發FetchEvent,然后觸發事件類型為fetch事件偵聽器進行處理。事件處理程序可以調用event對象的以下方法來進行控制:
- event.respondWith( response
Request|Promise)void- 攔截請求并發送自定義響應。
- 必須調用respondWith()進行有效的響應,否則運行時會報錯。
生命周期
當邊緣接收到一個請求,該請求的URL映射到用戶函數時,FetchEvent生命周期開始;這時運行時觸發一個事件,并創建一個FetchEvent對象傳遞給運行時的第一個注冊為fetch的事件處理程序。
事件處理程序可以使用respondWith()來攔截請求并允許用戶發送自定義響應。
如果fetch事件處理程序未調用respondWith(),則運行時會將事件傳遞到下一個注冊的fetch事件處理程序。
addEventListener('fetch', (event) => {
event.respondWith(handle(event));
});
async function handle(event) {
// 1.異步發起一個fetch請求,但是我們不使用await,所以該請求會并行執行
fetch("//www.daliqc.cn");
// 2.立刻發起回復。這個回復hello world發回給客戶端時,前面發起的fetch可能沒有執行完畢。
return "hello world";
}