# yocto-queue 中文文档

规范地址：https://npmcn.com/package/yocto-queue/

版本：1\.2\.2
npm 元数据更新时间：2025-11-11T06:32:09.168Z
中文译文更新时间：2026-11-04T16:07:04.939Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：8.1 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=12\.20
- 运行依赖：0 个
- 首次发布：2020-11-24T05:59:48.704Z
- 最新版本发布：2025-11-11T06:32:08.991Z
- 近 30 天下载量：797981670（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 1 个）

## 中文简介

Tiny队列数据结构

## 安装

```sh
npm install yocto-queue
```

也可以使用：`pnpm add yocto-queue`、`yarn add yocto-queue`、`bun add yocto-queue`

## README

# Yoct0-队列 [![](https://badgen.net/bundlephobia/minzip/yocto-queue)](https://bundlephobia.com/result?p=yocto-queue)

> Tiny队列数据结构

你应该使用这个包，而不是一个数组，如果你做了很多 `Array#push()` 和 `Array#shift()` 在大型阵列上，因为 `Array#shift()` 有 [线性时间复杂度](https://medium.com/@ariel.salem1989/an-easy-to-use-guide-to-big-o-time-complexity-5dcf4be8a444#:~:text=O\(N\)%E2%80%94Linear%20Time) _O(n)_ 当……时 `Queue#dequeue()` 有 [常数时间复杂度](https://medium.com/@ariel.salem1989/an-easy-to-use-guide-to-big-o-time-complexity-5dcf4be8a444#:~:text=O\(1\)%20%E2%80%94%20Constant%20Time) _O(1)_.这使得大型阵列的巨大差异。

> 一个 [队列](https://en.wikipedia.org/wiki/Queue_\(abstract_data_type\)) 是一个有序的元素列表，其中一个元素被插入到队列的末尾，并从队列的前面删除。一个队列的工作原理是基于先进先出 ([先进先出](https://en.wikipedia.org/wiki/FIFO_\(computing_and_electronics\))) 原则。

## 安装

```sh
npm install yocto-queue
```

## 用法

```js
import Queue from 'yocto-queue';

const queue = new Queue();

queue.enqueue('🦄');
queue.enqueue('🌈');

console.log(queue.size);
//=> 2

console.log(...queue);
//=> '🦄 🌈'

console.log(queue.dequeue());
//=> '🦄'

console.log(queue.dequeue());
//=> '🌈'
```

## API

### `queue = new Queue()`

该实例是一个 [`Iterable`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols),这意味着您可以使用 “for... of” 循环从前到后迭代队列。使用迭代器不会从队列中删除项目。如果你想要，使用 [`drain()`](https://npmcn.com/package/yocto-queue/#readme-drain) 代替。

您还可以使用扩展将队列转换为数组。除非你真的需要，否则不要这样做，因为它很慢。

#### `.enqueue(value)`

向队列添加一个值。

#### `.dequeue()`

删除队列中的下一个值。

返回删除的值或 `undefined` 如果队列为空。

#### `.peek()`

获取队列中的下一个值，而不删除它。

返回值或 `undefined` 如果队列为空。

#### `.drain()`

返回一个迭代器，该迭代器在您使用项目时将其从队列中删除。

这允许您在处理其项目时清空队列。

如果您不想在消费时删除项目，请使用 `Queue` 对象作为迭代器。

#### `.clear()`

清除队列。

#### `.size`

队列的大小。

## 相关

-   [快速-lru](https://github.com/sindresorhus/quick-lru) -简单的 “最近最少使用” (LRU) 缓存

## 常见问题

### yocto-queue 是什么？

Tiny队列数据结构

### 如何安装 yocto-queue？

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

### yocto-queue 支持 TypeScript 吗？

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

### yocto-queue 支持 ESM 还是 CommonJS？

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

### yocto-queue 需要什么版本的 Node\.js？

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

### yocto-queue 可以商用吗？

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

### yocto-queue 的下载量有多少？

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

### yocto-queue 还在维护吗？

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

