ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 请求上下文 ## `Request`上下文是什么? 请求上下文是`"fetch"`事件回调的上下文。这是需要注意的重要的是,由于工人是如何执行的,异步任务(例如`fetch`)只能运行*内部*请求上下文。 在[提取事件](https://developers.cloudflare.com/workers/reference/apis/fetch-event/)回调期间: ~~~javascript addEventListener('fetch', event => { // the request context is available here event.respondWith(/*...*/) }) ~~~ ## 何时`Request`激活上下文? ### 通过承诺时`FetchEvent.respondWith()` 如果将响应承诺传递给`FetchEvent.respondWith()`,则在响应承诺建立之前运行的任何异步任务期间,请求上下文均处于活动状态。您可以将事件传递给异步处理程序,例如: ~~~javascript addEventListener('fetch', event => { event.respondWith(eventHandler(event)) }) // no request context here async function eventHandler(event){ // request context is available here return new Response('Hello, Workers!') } ~~~ ## 尝试访问非活动`Request`上下文时会发生什么? 在脚本启动期间尝试使用诸如`fetch()`或访问`Request`上下文之类的API的任何尝试都会引发异常: ~~~javascript const promise = fetch('https://example.com/') // ERROR async function eventHandler(event){..} ~~~ 此代码段将在脚本启动期间抛出,并且`"fetch"`事件侦听器将永远不会被注册。