# @evan/concurrency 中文文档

规范地址：https://npmcn.com/package/%40evan/concurrency/

版本：0\.0\.3
npm 元数据更新时间：2025-01-05T09:20:23.630Z
中文译文更新时间：2026-11-14T00:47:31.649Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40evan/concurrency
原文对照：https://npmcn.com/package/%40evan/concurrency/?lang=original
项目主页：https://github.com/evanwashere/concurrency#readme
源码仓库：https://github.com/evanwashere/concurrency

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

- 包体积（解压后）：8.1 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2025-01-04T03:15:34.082Z
- 最新版本发布：2025-01-05T09:20:23.427Z
- 近 30 天下载量：99107（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 0 个）

## 中文简介

币值

## 安装

```sh
npm install @evan/concurrency
```

也可以使用：`pnpm add @evan/concurrency`、`yarn add @evan/concurrency`、`bun add @evan/concurrency`

## README

## 安装

`bun add @evan/concurrency`

`npm install @evan/concurrency`

## 限制

控制同步任务的同步执行.

```js
import { Limiter } from '@evan/concurrency';

const queue = Limiter(5);

queue.add(() => new Promise(...));
queue.add(() => new Promise(...));

// wait for all promises to finish
await queue.flush();
```

### API 参考

#### 限制(n,选项)

创建新的限制实例.

参数:

-   `n` (数目):环缓冲器的大小
-   `options` (对象):可选配置
    -   `limit` (数字,默认值:n):最大任务数(环+逃脱)
    -   `timeout` (null qq数字, 默认: 无效): 超时以毫秒计, 在超时任务被越出以释放环位后
    -   `threshold` (数目,默认值:0.75):慢出/超时任务切换为逃出策略的阈值比

#### 方法

##### 冲号( )

等待所有环任务完成.

##### 添加(fn)

将任务添加到执行环中.

-   `fn`: 返回承诺的函数

_(注:fn必须是aync并处理自己的错误)_

### 细小版本

只有简化的环缓冲程序可以执行。 这种轻量级的版本被优化为大小(~120字节已分解),同时保持了对完成时间没有巨大差异的任务的巨大性能.

```js
import { Limiterr } from '@evan/concurrency';

const c = new Limiterr(5);

c(async () => {});
```

### 业绩

限制器(n)使用环缓冲器和阁相器来高效地进行任务调度. 阈值选项通过基于负载的不同策略之间的切换,自动优化性能.

```js
clk: ~3.37 GHz
cpu: Apple M2 Pro
runtime: node 23.4.0 (arm64-darwin)

benchmark                   avg (min … max) p75   p99    (min … top 1%)
------------------------------------------- -------------------------------
Limiter(1)                   169.36 µs/iter 166.38 µs █▃                   
                    (155.75 µs … 571.08 µs) 289.17 µs ██▆▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▂▁▁
                  5.37 ipc (  2.43% stalls)  99.52% L1 data cache
        592.77k cycles   3.19M instructions  45.58% retired LD/ST (  1.45M)

Limiter(8)                   167.56 µs/iter 164.92 µs █▃                   
                    (154.83 µs … 385.50 µs) 286.46 µs ██▆▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▂▂▁
                  5.43 ipc (  3.56% stalls)  99.08% L1 data cache
        584.58k cycles   3.17M instructions  45.63% retired LD/ST (  1.45M)

Limiter(12)                  164.93 µs/iter 162.50 µs █▂                   
                    (152.38 µs … 353.04 µs) 279.67 µs ██▇▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▂▂▁
                  5.51 ipc (  3.54% stalls)  99.09% L1 data cache
        575.28k cycles   3.17M instructions  45.63% retired LD/ST (  1.45M)

p-limit(1)                   430.61 µs/iter 420.13 µs  █▂                  
                    (387.38 µs … 770.88 µs) 602.21 µs ▃██▄▂▁▁▁▁▁▁▁▁▁▃▃▂▁▁▁▁
                  4.83 ipc (  4.20% stalls)  97.39% L1 data cache
          1.49M cycles   7.21M instructions  45.45% retired LD/ST (  3.28M)

p-limit(8)                   417.55 µs/iter 405.21 µs  █▃                  
                    (379.13 µs … 713.92 µs) 563.21 µs ███▅▂▁▁▁▁▁▁▁▁▁▁▁▂▄▃▂▁
                  4.95 ipc (  4.58% stalls)  97.24% L1 data cache
          1.45M cycles   7.18M instructions  45.47% retired LD/ST (  3.27M)

p-limit(12)                  422.99 µs/iter 403.50 µs  █                   
                    (377.42 µs … 722.46 µs) 611.46 µs ██▇▃▁▁▁▁▁▁▁▁▁▁▁▁▂▃▂▂▁
                  4.98 ipc (  4.57% stalls)  97.26% L1 data cache
          1.44M cycles   7.15M instructions  45.31% retired LD/ST (  3.24M)

                             ┌                                            ┐
                             ┌┬           ╷
                 Limiter($c) ││───────────┤
                             └┴           ╵
                                                   ╷┌───┬                 ╷
                 p-limit($c)                       ├┤   │─────────────────┤
                                                   ╵└───┴                 ╵
                             └                                            ┘
                             152.38 µs         381.92 µs          611.46 µs

summary
  Limiter($c)
   +2.54…+2.53x faster than p-limit($c)
```

## 许可证

麻省理工学院 [伊凡在这里](https://github.com/evanwashere)

## 常见问题

### @evan/concurrency 是什么？

币值

### 如何安装 @evan/concurrency？

在项目目录运行 npm install @evan/concurrency，或使用 pnpm add / yarn add / bun add。

### @evan/concurrency 支持 TypeScript 吗？

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

### @evan/concurrency 支持 ESM 还是 CommonJS？

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

### @evan/concurrency 可以商用吗？

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

### @evan/concurrency 的下载量有多少？

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

### @evan/concurrency 还在维护吗？

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

