# 请求上下文
## `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"`事件侦听器将永远不会被注册。
- 关于本翻译文档
- 快速开始
- 模版库
- 讲解
- Workers页面
- 从0开始
- 从已有页面开始
- 从已有Worder开始
- 工具
- Cli工具 wrangler
- 安装
- 指令
- 配置
- 环境
- Webpack
- 密钥
- KV
- 网站
- Playground
- ServerLess插件
- Terraform
- REST API
- Making Requests
- Scripts
- Bindings
- Routes
- Integrations
- 相关
- 工作原理
- 安全
- 使用缓存
- 价格
- Routes
- Limits
- 提示
- 调试技巧
- 调试header
- FetchEvent生命周期
- 请求上下文
- 请求sign
- 参考
- runtime API
- Web Standards
- fetch
- fetchEvent
- Response
- Request
- KV
- Environment Variables
- Streams
- Encoding
- Web Crypto
- Cache API
- HTMLRewriter
- Workers KV
- Use cases
- Namespaces