分配给运行时的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("https://www.ctyun.cn");
// 2.立刻发起回复。这个回复hello world发回给客户端时,前面发起的fetch可能没有执行完毕。
return "hello world";
}