柯里化优化 AJAX 请求函数的核心是将 baseURL、认证头、超时等不变配置提前固化,生成只接收路径和动态参数的专用函数,提升复用性、可维护性与环境切换灵活性。

用柯里化优化 AJAX 请求函数,核心是把不变的配置(比如 baseURL、认证头、超时时间)提前固化,让每次调用只传变化的部分(如接口路径、请求体),既干净又不容易出错。
把基础配置抽出来,生成专用请求函数
一个典型的 AJAX 函数通常要反复写相同的 headers 和 baseURL。柯里化后,这些固定项只设一次:
- 先传入 baseURL 和默认 headers,返回一个新函数
- 这个新函数接收 path 和可选 options,直接发起请求
- 比如:
const api = curryAjax('https://api.example.com', { headers: { Authorization: 'Bearer xxx' } }); - 后续调用就变成
api('/user')或api('/order', { method: 'POST', body: data })
不同环境共用同一套逻辑,切换只需换变量
开发、测试、生产环境的地址不同?不用在代码里加 if 判断或硬编码:
const devApi = createApi('https://dev.api.com');const prodApi = createApi('https://api.com');- 两个函数签名完全一致,业务层调用方式一模一样
- 上线时只需替换 api 变量,不碰任何业务逻辑
支持分步传参,适合表单、按钮等交互场景
有些操作需要用户触发后才确定数据,柯里化天然支持延迟传参:
- 先绑定路径:
const login = api('/auth/login'); - 点击按钮时再传数据:
login({ email, password }).then(...) - 中间还能插入 loading 状态、参数校验等逻辑,职责更清晰
- 也方便做单元测试——可以单独验证 login 函数是否正确携带了 baseURL 和 headers
闭包实现简单可靠,不需要额外依赖
自己写个 curry 工具函数就够了,几行代码就能搞定:
- 利用闭包保存已传参数
- 靠
fn.length判断是否该执行原函数 - 支持多种调用风格:可以
api('/user'),也可以api('/user', { method: 'GET' }) - 不依赖 Lodash 或 Ramda,轻量且可控
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











