# fastq 中文文档

规范地址：https://npmcn.com/package/fastq/

版本：1\.20\.3
npm 元数据更新时间：2026-08-29T06:32:01.014Z
中文译文更新时间：2026-11-05T14:34:07.176Z
软件包许可：ISC

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

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

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

- 包体积（解压后）：50.6 kB，14 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：1 个
- 首次发布：2015-06-14T18:25:18.741Z
- 最新版本发布：2026-08-29T06:32:00.667Z
- 近 30 天下载量：566094372（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：32（近 12 个月 4 个）

## 中文简介

快速，在内存工作队列

## 安装

```sh
npm install fastq
```

也可以使用：`pnpm add fastq`、`yarn add fastq`、`bun add fastq`

## README

# 快递q

![ci](https://github.com/mcollina/fastq/workflows/ci/badge.svg) [![npm version](https://badge.fury.io/js/fastq.svg)](https://badge.fury.io/js/fastq)

快速, 在内存工作队列中 .

基准(100万项任务):

-   即时设置: 812ms
-   快克:854ms (中文(简体) )
-   aync.queue: 1298ms (英语)
-   新Async.queue:1249ms (英语)

在12.16.1节点上通过专用服务器获得.

如果您需要零头系列函数呼叫, 请检查 [快速序列](http://npm.im/fastseries)。用于零管理平行 函数调用, 检查出 [快速平行](http://npm.im/fastparallel)。 。 。 .

-   [安装](https://npmcn.com/package/fastq/#readme-install)
-   [使用量](https://npmcn.com/package/fastq/#readme-usage)
-   [API 密码](https://npmcn.com/package/fastq/#readme-api)
-   [许可证和版权](https://npmcn.com/package/fastq/#readme-license)

## 安装

`npm i fastq --save`

## 用法( 回调 API)

```js
'use strict'

const queue = require('fastq')(worker, 1)

queue.push(42, function (err, result) {
  if (err) { throw err }
  console.log('the result is', result)
})

function worker (arg, cb) {
  cb(null, arg * 2)
}
```

## 用法(保证API)

```js
const queue = require('fastq').promise(worker, 1)

async function worker (arg) {
  return arg * 2
}

async function run () {
  const result = await queue.push(42)
  console.log('the result is', result)
}

run()
```

### 设置"这个"

```js
'use strict'

const that = { hello: 'world' }
const queue = require('fastq')(that, worker, 1)

queue.push(42, function (err, result) {
  if (err) { throw err }
  console.log(this)
  console.log('the result is', result)
})

function worker (arg, cb) {
  console.log(this)
  cb(null, arg * 2)
}
```

### 使用类型脚本( 回调 API)

```ts
'use strict'

import * as fastq from "fastq";
import type { queue, done } from "fastq";

type Task = {
  id: number
}

const q: queue<Task> = fastq(worker, 1)

q.push({ id: 42})

function worker (arg: Task, cb: done) {
  console.log(arg.id)
  cb(null)
}
```

### 使用类型脚本( 保证 API)

```ts
'use strict'

import * as fastq from "fastq";
import type { queueAsPromised } from "fastq";

type Task = {
  id: number
}

const q: queueAsPromised<Task> = fastq.promise(asyncWorker, 1)

q.push({ id: 42}).catch((err) => console.error(err))

async function asyncWorker (arg: Task): Promise<void> {
  // No need for a try-catch block, fastq handles errors automatically
  console.log(arg.id)
}
```

## API 密码

-   [`fastqueue()`](https://npmcn.com/package/fastq/#readme-fastqueue)
-   [`queue#**push()**`](https://npmcn.com/package/fastq/#readme-push)
-   [`queue#**unshift()**`](https://npmcn.com/package/fastq/#readme-unshift)
-   [`queue#**pause()**`](https://npmcn.com/package/fastq/#readme-pause)
-   [`queue#**resume()**`](https://npmcn.com/package/fastq/#readme-resume)
-   [`queue#**idle()**`](https://npmcn.com/package/fastq/#readme-idle)
-   [`queue#**length()**`](https://npmcn.com/package/fastq/#readme-length)
-   [`queue#**getQueue()**`](https://npmcn.com/package/fastq/#readme-getQueue)
-   [`queue#**kill()**`](https://npmcn.com/package/fastq/#readme-kill)
-   [`queue#**killAndDrain()**`](https://npmcn.com/package/fastq/#readme-killAndDrain)
-   [`queue#**error()**`](https://npmcn.com/package/fastq/#readme-error)
-   [`queue#**concurrency**`](https://npmcn.com/package/fastq/#readme-concurrency)
-   [`queue#**drain**`](https://npmcn.com/package/fastq/#readme-drain)
-   [`queue#**empty**`](https://npmcn.com/package/fastq/#readme-empty)
-   [`queue#**saturated**`](https://npmcn.com/package/fastq/#readme-saturated)
-   [`fastqueue.promise()`](https://npmcn.com/package/fastq/#readme-promise)

* * *

### fastqueue(\[那\],工人,货币)

创建新队列.

参数 :

-   `that`,可选上下文 `worker` 函数.
-   `worker`,工人的功能, 它被称为与 `that` 作为 `this`, (中文(简体) ), 如果有的话.
-   `concurrency`, 可在 平行.

* * *

### 队列. push( 任务, 已完成)

在队列末尾添加任务 . `done(err, result)` 将被调用 当任务被处理时.

* * *

### 队列. unshort( 任务已完成)

在队列开头添加任务 . `done(err, result)` 将被调用 当任务被处理时.

* * *

### 队列. 暂停 ()

暂停任务处理 。 目前的工作任务不是 停下来.

* * *

### 队列. resume ()

恢复任务处理.

* * *

### 队列. idle ()

回返 `false` 如果有任务正在处理或等待处理. `true` 否则.

* * *

### 队列. 长 ()

返回等待处理的任务数量(在队列中).

* * *

### 队列。 get Quue ()

返回所有要处理的任务( 在队列中) 。 在没有任务时返回空数组

* * *

### 队列. kill ()

删除待处理的所有任务,并重设 `drain` 改为空 函数.

* * *

### 队列。 kill AndDrain ()

与 `kill` 不过 `drain` 函数在重置为空之前将被调用.

* * *

### 队列. error( 处理器)

设置全局错误处理器 . `handler(err, task)` 将被调用 每次任务完成后, `err` 如果任务出错, 将不会无效 .

* * *

### 队列. 货币

返回可执行的并行任务数量的财产 平行。 运行时可以改变.

* * *

### 队列。 已暂停

返回的属性( 只读) `true` 当队列处于停顿状态时.

* * *

### 队列. drain

上次调用时的函数 来自队列的项目已经由工人处理. 运行时可以改变.

* * *

### 队列。 空

上次调用时的函数 从队列中列出的项目已分配给工人. 运行时可以改变.

* * *

### 队列。饱和

当队列击中货币时调用的函数 限制. 运行时可以改变.

* * *

### fastqueue.promise(\[那\],工人(arg),货币)

创建一个新队列 `Promise` pi. 它也提供了所有的方法 和返回对象的属性 [`fastqueue`](https://npmcn.com/package/fastq/#readme-fastqueue) 修改后 [`push`](https://npmcn.com/package/fastq/#readme-pushPromise) 财务报告和审定财务报表 [`unshift`](https://npmcn.com/package/fastq/#readme-unshiftPromise) 方法。 。 .

节点v10+需要使用被打通的版本.

参数 :

-   `that`,可选上下文 `worker` 函数.
-   `worker`,工人的功能, 它被称为与 `that` 作为 `this`, (中文(简体) ), 如果有的话。 它必须返回a `Promise`。 。 。 .
-   `concurrency`, 可在 平行.

#### 队列. push( 任务) QQ 答应

在队列末尾添加任务 。 回来的 `Promise` 将实现( 已拒绝) 当任务成功完成时( 未成功) .

这一承诺可能会被忽略,因为它不会导致 `'unhandledRejection'`。 。 。 .

#### 队列. unshort(任务) QQ 答应

在队列开头添加任务 。 回来的 `Promise` 将实现( 已拒绝) 当任务成功完成时( 未成功) .

这一承诺可能会被忽略,因为它不会导致 `'unhandledRejection'`。 。 。 .

#### 队列. drained () QQ 答应

等待排队排出. 回来的 `Promise` 将在队列中的所有任务由工人处理后解决.

这一承诺可能会被忽略,因为它不会导致 `'unhandledRejection'`。 。 。 .

## 许可证

公务员制度委员会

## 常见问题

### fastq 是什么？

快速，在内存工作队列

### 如何安装 fastq？

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

### fastq 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/fastq 是否存在。

### fastq 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### fastq 可以商用吗？

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

### fastq 的下载量有多少？

根据 npm 官方下载统计，fastq 在 2026/10/05 – 2026/11/03 这 30 天内被下载 566,094,372 次，日均约 18,869,812 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### fastq 还在维护吗？

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

