# @cratestack/link-batch 中文文档

规范地址：https://npmcn.com/package/%40cratestack/link-batch/

版本：0\.19\.3
npm 元数据更新时间：2026-11-09T15:57:50.818Z
中文译文更新时间：2026-11-10T23:45:14.040Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cratestack/link-batch
原文对照：https://npmcn.com/package/%40cratestack/link-batch/?lang=original
项目主页：https://cratestack.dev/
源码仓库：https://github.com/cratestack/cratestack

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：41.2 kB，23 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24
- 运行依赖：1 个
- 首次发布：2026-08-02T03:44:37.034Z
- 最新版本发布：2026-11-09T15:57:50.319Z
- 近 30 天下载量：2632（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：67（近 12 个月 67 个）

## 中文简介

为 CrateStack 生成的 TypeScript RPC 客户端提供蝙蝠屎式自动批量排程器,以RpcLink 方式发运.

## 安装

```sh
npm install @cratestack/link-batch
```

也可以使用：`pnpm add @cratestack/link-batch`、`yarn add @cratestack/link-batch`、`bun add @cratestack/link-batch`

## README

# @ cratestack/ link- batch

A 类 [屁话](https://github.com/yornaath/batshit)\- CrateStack 的自动批量排程器 生成类型Script RPC客户端(`transport rpc` 计划),作为 [`RpcLink`](https://github.com/cratestack/cratestack/blob/main/packages/cratestack-ts-types) (单位:千美元)[问题182](https://github.com/cratestack/cratestack/issues/182)而不是一个 `fetch` 覆盖——所以它由 `@cratestack/link-logger`,重试链接,或重新认证链接 而不是打他们.

反应原生相容性证据在 [`docs/react-native-compatibility.md`](https://npmcn.com/package/docs/react-native-compatibility.md)。 。 。 .

在同一勾选符中发出的多次无序呼叫会崩溃成单个 `POST /rpc/batch` 请求 而不是发射一个 `POST /rpc/{op_id}` 每一个.

## 使用量

```ts
import { createBatchLink } from "@cratestack/link-batch";
import { CratestackRpcRuntime } from "./generated/runtime"; // your project's generated client

const runtime = new CratestackRpcRuntime("https://api.example.com", {
  links: [createBatchLink()],
});
const client = new MyGeneratedClient(runtime);

// These three calls, if issued in the same tick, become ONE /rpc/batch request:
const [a, b, c] = await Promise.all([
  client.widgets.get(1),
  client.widgets.get(2),
  client.widgets.get(3),
]);
```

## 断接语义

-   **窗口**: 默认为 `queueMicrotask` ——在同一勾点中同步发来呼叫(如:. 内部 `Promise.all`)崩溃. 过 `windowMs` 将窗口对开.
-   **分区** (固定在 [273号](https://github.com/cratestack/cratestack/issues/273); 版本 ưμ㼯A 按运输信封分列的分区——标题(不包括) `Idempotency-Key`,该附件载有 (b) 按框架而不是按要求), `fetch` 参考、编码参考和已解决的批次 URL - 每一个分区都是作为自己的 `POST /rpc/batch`。呼吁共享一个信封 绝大多数常见的情况,仍然完全变成一个请求;没有这样的电话(例如两个) 不同 `Authorization` 标题)各保留自己的,在单独的请求中,而不是一个 默而覆于彼所出.
-   **总标题**: 通过 `headers` 改为 `createBatchLink({ headers })` 以声明信头 每一个合成 `/rpc/batch` 请求载, 合并 **结束** 每个分区本身的——a 同名的每个呼叫标题被这个值所压倒,而不是相反. 使用这个 服务级头(如 API 密钥) 而不是 per- tenant auth, 应从 驱动分区的每个呼叫头.
-   **`maxBatchSize`** 已执行 **每个分区**,而不是全球横冲直撞——一个 将超大小的分隔块划入多个并行请求中;它从不借用一个 不同的分区.
-   **编剧**: 只呼叫共享明确 `idempotencyKey` 崩溃为一个请求框架 默认情况下——这已经是呼叫者自己的信号,即呼叫是安全的重复. 电话: 没有一能键从不自动折叠,因为服务器没有自行脱落,而且 悄悄地合并两个文本相同但无标记的变异是不安全的。 通过自定义 `dedupe` 完全基于值的崩溃,或 `() => null` 以禁用调试并只禁用批量。 编剧 运行 _在内部_ 一个分区——它从不崩溃 跨越两个不同的信封.
-   **关联**: 通过匹配每个响应框的结果后扇出 `id`数组 位置——服务器的 `/rpc/batch` 合同已签发担保令(见 `docs/design/rpc-transport.md` §3.2),但基于id的匹配严格来说更坚固并具有镜像功能 repo自己的Rust客户端批发器(`examples/rpc-batch-debounce`) (中文(简体) ).
-   **失败隔离**: 失败的分区( 网络错误, 非 OK 响应) 只拒绝 已排队的呼叫者 _那个_ 分区——它绝不影响同时飞行的分区.

### 已知的限制

-   中止个人通话 `AbortSignal` 只有在批次尚未发送时才取消—— 它不会取消飞行 `/rpc/batch` 请求.
-   **(fixed in #273),这里保存着任何读取旧版本的道克的人** 在273号之前 已合成 `/rpc/batch` 请求重新使用 _第一个_ 队列调用 `headers`编号 :`fetchFn`编号 :`codec` 页:1 整个冲浪——同一窗口内后来的呼叫中,每个呼叫的自定义头被悄悄地放下 从总请求中选择,而不是应用。 这就是为什么现在存在分割.

## 常见问题

### @cratestack/link-batch 是什么？

为 CrateStack 生成的 TypeScript RPC 客户端提供蝙蝠屎式自动批量排程器,以RpcLink 方式发运\.

### 如何安装 @cratestack/link-batch？

在项目目录运行 npm install @cratestack/link-batch，或使用 pnpm add / yarn add / bun add。

### @cratestack/link-batch 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @cratestack/link-batch 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @cratestack/link-batch 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @cratestack/link-batch 可以商用吗？

@cratestack/link-batch 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @cratestack/link-batch 的下载量有多少？

根据 npm 官方下载统计，@cratestack/link-batch 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,632 次，日均约 88 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cratestack/link-batch 还在维护吗？

最新版本 0\.19\.3 发布于 2026/11/09（1 天前）；至今共发布 67 个版本，其中过去 12 个月发布了 67 个；首次发布于 2026/08/02。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

